# File lib/rbot/maskdb.rb, line 47
      def remove(*prefs, &block)
        str = prefs.shift or raise 'empty prefs?'
        return nil unless @pre.empty? or str.index(@pre) == 0
        c = str.slice(@pre.size) || ''
        return nil unless @chi.include? c
        if c == ''
          if prefs.empty?
            @chi[c].reject!(&block)
          else
            @chi[c].remove(*prefs, &block)
          end
        else
          @chi[c].remove(str.slice((@pre.size + 1) .. -1), *prefs, &block)
        end
        @chi.delete(c) if @chi[c].empty?

        if @chi.size == 1
          k = @chi.keys.shift
          return nil if k == ''
          @pre << k << @chi[k].pre
          @chi = @chi[k].chi
        end
      end