    # 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