new (FastRI::NameDescriptor)

    # File lib/fastri/name_descriptor.rb, line 26
      def initialize(arg)
        @class_names = []
        @method_name = nil
        @is_class_method = nil

        case arg
        when /((?:[^:]*::)*[^:]*)(#|::|\.)(.*)$/
          ns, sep, meth_or_class = $~.captures
          # optimization attempt: try to guess the real capitalization,
          # so we get a direct hit
          @class_names = ns.split(/::/).map{|x|  x[0,1] = x[0,1].upcase; x }
          if %w[# .].include? sep
            @method_name = meth_or_class
            @is_class_method =
              case sep
              when "#";  false
              when ".";  nil
              end
          else
            if ("A".."Z").include? meth_or_class[0,1] # 1.9 compatibility
              @class_names << meth_or_class
            else
              @method_name     = meth_or_class
              @is_class_method = true
            end
          end
        when /^[^#:.]+/
          if ("A".."Z").include? arg[0,1]
            @class_names = [arg]
          else
            @method_name     = arg.dup
            @is_class_method = nil
          end
        else
          raise RiError, "Cannot create NameDescriptor from #{arg}"
        end
      end