# File lib/puppet/parser/parser_support.rb, line 374
374:     def newnode(names, options = {})
375:         names = [names] unless names.instance_of?(Array)
376:         doc = lexer.getcomment
377:         names.collect do |name|
378:             name = AST::HostName.new :value => name unless name.is_a?(AST::HostName)
379:             if other = @loaded_code.node_exists?(name)
380:                 error("Node %s is already defined at %s:%s; cannot redefine" % [other.name, other.file, other.line])
381:             end
382:             name = name.to_s if name.is_a?(Symbol)
383:             args = {
384:                 :name => name,
385:                 :parser => self,
386:                 :doc => doc,
387:                 :line => options[:line]
388:             }
389:             if options[:code]
390:                 args[:code] = options[:code]
391:             end
392:             if options[:parent]
393:                 args[:parentclass] = options[:parent]
394:             end
395:             node = ast(AST::Node, args)
396:             node.classname = name.to_classname
397:             @loaded_code.add_node(name, node)
398:             node
399:         end
400:     end