# File lib/yard/code_objects/base.rb, line 164
        def new(namespace, name, *args, &block)
          raise ArgumentError, "invalid empty object name" if name.to_s.empty?
          if namespace.is_a?(ConstantObject)
            namespace = Proxy.new(namespace.namespace, namespace.value)
          end

          if name.to_s[0,2] == NSEP
            name = name.to_s[2..-1]
            namespace = Registry.root
          elsif name =~ /(?:#{NSEPQ})([^:]+)$/
            return new(Proxy.new(namespace, $`), $1, *args, &block)
          end

          obj = super(namespace, name, *args)
          existing_obj = Registry.at(obj.path)
          obj = existing_obj if existing_obj && existing_obj.class == self
          yield(obj) if block_given?
          obj
        end