# File lib/yard/code_objects/base.rb, line 52
        def new(namespace, name, *args, &block)
          if name.to_s[0,2] == NSEP
            name = name.to_s[2..-1]
            namespace = Registry.root
          elsif name =~ /(?:#{NSEPQ}|#{ISEPQ}|#{CSEPQ})([^#{NSEPQ}#{ISEPQ}#{CSEPQ}]+)$/
            return new(Proxy.new(namespace, $`), $1, *args, &block)
          end
          
          keyname = namespace && namespace.respond_to?(:path) ? namespace.path : ''
          if self == RootObject
            keyname = :root
          elsif self == MethodObject
            keyname += (args.first && args.first.to_sym == :class ? CSEP : ISEP) + name.to_s
          elsif keyname.empty?
            keyname = name.to_s
          else
            keyname += NSEP + name.to_s
          end
          
          obj = Registry.objects[keyname]
          obj = nil if obj && obj.class != self
          
          if self != RootObject && obj
            yield(obj) if block_given?
            obj
          else
            Registry.objects[keyname] = super(namespace, name, *args, &block)
          end
        end