package st.gravel.support.compiler.ast; /* This file is automatically generated from typed smalltalk source. Do not edit by hand. (C) AG5.com */ import java.math.BigInteger; import st.gravel.support.jvm.NonLocalReturn; import st.gravel.support.compiler.ast.NodeVisitor; import st.gravel.support.compiler.ast.Node; import st.gravel.support.compiler.ast.NodeVisitor.NodeVisitor_Factory; import st.gravel.support.compiler.ast.MethodNode; import st.gravel.support.compiler.ast.ArrayAccessNode; import st.gravel.support.compiler.ast.Expression; import st.gravel.support.compiler.ast.ArrayAtNode; import st.gravel.support.compiler.ast.ArrayAtPutNode; import st.gravel.support.compiler.ast.ArrayLiteralNode; import st.gravel.support.compiler.ast.LiteralNode; import st.gravel.support.compiler.ast.ArraySizeNode; import st.gravel.support.compiler.ast.AssignmentNode; import st.gravel.support.compiler.ast.VariableNode; import st.gravel.support.compiler.ast.BinaryMessageNode; import st.gravel.support.compiler.ast.Statement; import st.gravel.support.compiler.ast.BinaryMethodNode; import st.gravel.support.compiler.ast.VariableDeclarationNode; import st.gravel.support.compiler.ast.SequenceNode; import st.gravel.support.compiler.ast.TypeNode; import st.gravel.support.compiler.ast.PragmaNode; import st.gravel.support.compiler.ast.BlockNode; import st.gravel.support.compiler.ast.BlockTypeNode; import st.gravel.support.compiler.ast.BooleanAndNode; import st.gravel.support.compiler.ast.BooleanLiteralNode; import st.gravel.support.compiler.ast.BooleanOrNode; import st.gravel.support.compiler.ast.BottomTypeNode; import st.gravel.support.compiler.ast.BoundVariableDeclarationNode; import st.gravel.support.compiler.ast.ByteArrayLiteralNode; import st.gravel.support.compiler.ast.CascadeNode; import st.gravel.support.compiler.ast.MessageNode; import st.gravel.support.compiler.ast.CharacterLiteralNode; import st.gravel.support.compiler.ast.ClassDescriptionNode; import st.gravel.support.compiler.ast.ClassNode; import st.gravel.support.compiler.ast.TraitUsageNode; import st.gravel.support.compiler.ast.ClassTypeNode; import st.gravel.support.compiler.ast.CreateHolderNode; import st.gravel.support.compiler.ast.DoubleLiteralNode; import st.gravel.support.compiler.ast.FieldReadNode; import st.gravel.support.compiler.ast.FieldWriteNode; import st.gravel.support.compiler.ast.FixedPointLiteralNode; import st.gravel.support.compiler.ast.FloatLiteralNode; import st.gravel.support.compiler.ast.GenericTypeVariableNode; import st.gravel.support.compiler.ast.GlobalReadNode; import st.gravel.support.compiler.ast.GlobalWriteNode; import st.gravel.support.compiler.ast.HolderDeclarationNode; import st.gravel.support.compiler.ast.IdentityComparisonNode; import st.gravel.support.compiler.ast.IfTrueIfFalseNode; import st.gravel.support.compiler.ast.InlineExpressionCollection; import st.gravel.support.compiler.ast.InstanceCreationNode; import st.gravel.support.compiler.ast.InstanceTypeNode; import st.gravel.support.compiler.ast.IntegerLiteralNode; import st.gravel.support.compiler.ast.IntermediateNode; import st.gravel.support.compiler.ast.IntermediateStatement; import st.gravel.support.compiler.ast.IsNilNode; import st.gravel.support.compiler.ast.KeywordMessageNode; import st.gravel.support.compiler.ast.KeywordMethodNode; import st.gravel.support.compiler.ast.LocalReadNode; import st.gravel.support.compiler.ast.LocalWriteNode; import st.gravel.support.compiler.ast.NamespacedTypeVariableNode; import st.gravel.support.compiler.ast.NamespacedVariableNode; import st.gravel.support.compiler.ast.NamespaceNode; import st.gravel.support.compiler.ast.SharedDeclarationNode; import st.gravel.support.compiler.ast.NilLiteralNode; import st.gravel.support.compiler.ast.NonLocalReturnNode; import st.gravel.support.compiler.ast.PackageNode; import st.gravel.support.compiler.ast.ReadHolderNode; import st.gravel.support.compiler.ast.ReferenceLiteralNode; import st.gravel.support.compiler.ast.ReturnNode; import st.gravel.support.compiler.ast.SelfNode; import st.gravel.support.compiler.ast.SelfTypeNode; import st.gravel.support.compiler.ast.StateAccessNode; import st.gravel.support.compiler.ast.StringLiteralNode; import st.gravel.support.compiler.ast.SuperNode; import st.gravel.support.compiler.ast.SymbolLiteralNode; import st.gravel.support.compiler.ast.ToDoNode; import st.gravel.support.compiler.ast.TypeCast; import st.gravel.support.compiler.ast.TypeDefNode; import st.gravel.support.compiler.ast.TypeOrNode; import st.gravel.support.compiler.ast.TypeVariableNode; import st.gravel.support.compiler.ast.UnaryMessageNode; import st.gravel.support.compiler.ast.UnaryMethodNode; import st.gravel.support.compiler.ast.WhileFalseNode; import st.gravel.support.compiler.ast.WhileNode; import st.gravel.support.compiler.ast.WhileTrueNode; import st.gravel.support.compiler.ast.WriteHolderNode; public class NodeCopier extends NodeVisitor<Node> implements Cloneable { public static NodeCopier_Factory factory = new NodeCopier_Factory(); public static class NodeCopier_Factory extends NodeVisitor_Factory<Node> { public NodeCopier basicNew() { NodeCopier newInstance = new NodeCopier(); newInstance.initialize(); return newInstance; } } public NodeCopier copy() { try { NodeCopier _temp1 = (NodeCopier) this.clone(); _temp1.postCopy(); return _temp1; } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } } public NodeCopier_Factory factory() { return factory; } public String produceNlrMarkerDefinition_for_(final String _aString, final MethodNode _aMethodNode) { return _aString; } @Override public ArrayAccessNode visitArrayAccessNode_(final ArrayAccessNode _anObject) { return ArrayAccessNode.factory.receiver_(((Expression) this.visit_(_anObject.receiver()))); } @Override public ArrayAtNode visitArrayAtNode_(final ArrayAtNode _anObject) { return ArrayAtNode.factory.receiver_index_(((Expression) this.visit_(_anObject.receiver())), ((Expression) this.visit_(_anObject.index()))); } @Override public ArrayAtPutNode visitArrayAtPutNode_(final ArrayAtPutNode _anObject) { return ArrayAtPutNode.factory.receiver_index_value_(((Expression) this.visit_(_anObject.receiver())), ((Expression) this.visit_(_anObject.index())), ((Expression) this.visit_(_anObject.value()))); } @Override public ArrayLiteralNode visitArrayLiteralNode_(final ArrayLiteralNode _anObject) { return ArrayLiteralNode.factory.elements_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.elements(), ((st.gravel.support.jvm.Block1<LiteralNode, LiteralNode>) (new st.gravel.support.jvm.Block1<LiteralNode, LiteralNode>() { @Override public LiteralNode value_(final LiteralNode _each) { return (LiteralNode) NodeCopier.this.visit_(_each); } })))); } @Override public ArraySizeNode visitArraySizeNode_(final ArraySizeNode _anObject) { return ArraySizeNode.factory.receiver_(((Expression) this.visit_(_anObject.receiver()))); } @Override public Expression visitAssignmentNode_(final AssignmentNode _anObject) { return AssignmentNode.factory.variable_value_(((VariableNode) this.visit_(_anObject.variable())), ((Expression) this.visit_(_anObject.value()))); } @Override public Statement visitBinaryMessageNode_(final BinaryMessageNode _anObject) { return BinaryMessageNode.factory.receiver_selector_argument_(((Expression) this.visit_(_anObject.receiver())), _anObject.selector(), ((Expression) this.visit_(_anObject.argument()))); } @Override public MethodNode visitBinaryMethodNode_(final BinaryMethodNode _anObject) { final String _nlrMarker; _nlrMarker = this.produceNlrMarkerDefinition_for_(_anObject.nlrMarker(), _anObject); return BinaryMethodNode.factory.selector_argument_body_returnType_pragmas_protocol_nlrMarker_(_anObject.selector(), ((VariableDeclarationNode) this.visit_(_anObject.argument())), ((SequenceNode) this.visit_(_anObject.body())), ((TypeNode) this.visit_(_anObject.returnType())), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.pragmas(), ((st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>) (new st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>() { @Override public PragmaNode value_(final PragmaNode _each) { return (PragmaNode) NodeCopier.this.visit_(_each); } }))), _anObject.protocol(), _nlrMarker); } @Override public BlockNode visitBlockNode_(final BlockNode _anObject) { return BlockNode.factory.arguments_body_returnType_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.arguments(), ((st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>) (new st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>() { @Override public VariableDeclarationNode value_(final VariableDeclarationNode _each) { return (VariableDeclarationNode) NodeCopier.this.visit_(_each); } }))), ((SequenceNode) this.visit_(_anObject.body())), ((TypeNode) this.visit_(_anObject.returnType()))); } @Override public BlockTypeNode visitBlockTypeNode_(final BlockTypeNode _anObject) { return BlockTypeNode.factory.arguments_returnType_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.arguments(), ((st.gravel.support.jvm.Block1<TypeNode, TypeNode>) (new st.gravel.support.jvm.Block1<TypeNode, TypeNode>() { @Override public TypeNode value_(final TypeNode _each) { return (TypeNode) NodeCopier.this.visit_(_each); } }))), ((TypeNode) this.visit_(_anObject.returnType()))); } @Override public BooleanAndNode visitBooleanAndNode_(final BooleanAndNode _anObject) { return BooleanAndNode.factory.left_right_(((Expression) this.visit_(_anObject.left())), ((SequenceNode) this.visit_(_anObject.right()))); } @Override public BooleanLiteralNode visitBooleanLiteralNode_(final BooleanLiteralNode _anObject) { return BooleanLiteralNode.factory.value_(_anObject.value()); } @Override public BooleanOrNode visitBooleanOrNode_(final BooleanOrNode _anObject) { return BooleanOrNode.factory.left_right_(((Expression) this.visit_(_anObject.left())), ((SequenceNode) this.visit_(_anObject.right()))); } @Override public BottomTypeNode visitBottomTypeNode_(final BottomTypeNode _anObject) { return BottomTypeNode.factory.basicNew(); } @Override public BoundVariableDeclarationNode visitBoundVariableDeclarationNode_(final BoundVariableDeclarationNode _anObject) { return BoundVariableDeclarationNode.factory.name_type_ownerType_(_anObject.name(), ((TypeNode) this.visit_(_anObject.type())), _anObject.ownerType()); } @Override public ByteArrayLiteralNode visitByteArrayLiteralNode_(final ByteArrayLiteralNode _anObject) { return ByteArrayLiteralNode.factory.value_(_anObject.value()); } @Override public Expression visitCascadeNode_(final CascadeNode _anObject) { return CascadeNode.factory.messages_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.messages(), ((st.gravel.support.jvm.Block1<MessageNode, MessageNode>) (new st.gravel.support.jvm.Block1<MessageNode, MessageNode>() { @Override public MessageNode value_(final MessageNode _each) { return (MessageNode) NodeCopier.this.visit_(_each); } })))); } @Override public CharacterLiteralNode visitCharacterLiteralNode_(final CharacterLiteralNode _anObject) { return CharacterLiteralNode.factory.value_(_anObject.value()); } @Override public ClassDescriptionNode visitClassDescriptionNode_(final ClassDescriptionNode _anObject) { return ClassDescriptionNode.factory.methods_instVars_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.methods(), ((st.gravel.support.jvm.Block1<MethodNode, MethodNode>) (new st.gravel.support.jvm.Block1<MethodNode, MethodNode>() { @Override public MethodNode value_(final MethodNode _each) { return (MethodNode) NodeCopier.this.visit_(_each); } }))), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.instVars(), ((st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>) (new st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>() { @Override public VariableDeclarationNode value_(final VariableDeclarationNode _each) { return (VariableDeclarationNode) NodeCopier.this.visit_(_each); } })))); } @Override public ClassNode visitClassNode_(final ClassNode _anObject) { return ClassNode.factory.name_superclassPath_properties_instVars_classInstVars_sharedVariables_methods_classMethods_namespace_isExtension_isTrait_traitUsage_classTraitUsage_(_anObject.name(), _anObject.superclassPath(), _anObject.properties(), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.instVars(), ((st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>) (new st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>() { @Override public VariableDeclarationNode value_(final VariableDeclarationNode _each) { return (VariableDeclarationNode) NodeCopier.this.visit_(_each); } }))), _anObject.metaclassNode().instVars(), _anObject.metaclassNode().sharedVariables(), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.methods(), ((st.gravel.support.jvm.Block1<MethodNode, MethodNode>) (new st.gravel.support.jvm.Block1<MethodNode, MethodNode>() { @Override public MethodNode value_(final MethodNode _each) { return (MethodNode) NodeCopier.this.visit_(_each); } }))), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.classMethods(), ((st.gravel.support.jvm.Block1<MethodNode, MethodNode>) (new st.gravel.support.jvm.Block1<MethodNode, MethodNode>() { @Override public MethodNode value_(final MethodNode _each) { return (MethodNode) NodeCopier.this.visit_(_each); } }))), _anObject.namespace(), _anObject.isExtension(), _anObject.isTrait(), ((TraitUsageNode) this.visit_(_anObject.traitUsage())), ((TraitUsageNode) this.visit_(_anObject.classTraitUsage()))); } @Override public ClassTypeNode visitClassTypeNode_(final ClassTypeNode _anObject) { return ClassTypeNode.factory.node_(((TypeNode) this.visit_(_anObject.node()))); } @Override public CreateHolderNode visitCreateHolderNode_(final CreateHolderNode _anObject) { return CreateHolderNode.factory.basicNew(); } @Override public DoubleLiteralNode visitDoubleLiteralNode_(final DoubleLiteralNode _anObject) { return DoubleLiteralNode.factory.valueString_(_anObject.valueString()); } @Override public Expression visitExpression_(final Expression _anObject) { return Expression.factory.basicNew(); } @Override public Expression visitFieldReadNode_(final FieldReadNode _anObject) { return FieldReadNode.factory.owner_field_type_(((Expression) this.visit_(_anObject.owner())), _anObject.field(), ((TypeNode) this.visit_(_anObject.type()))); } @Override public FieldWriteNode visitFieldWriteNode_(final FieldWriteNode _anObject) { return FieldWriteNode.factory.owner_field_type_value_(((Expression) this.visit_(_anObject.owner())), _anObject.field(), ((TypeNode) this.visit_(_anObject.type())), ((Expression) this.visit_(_anObject.value()))); } @Override public FixedPointLiteralNode visitFixedPointLiteralNode_(final FixedPointLiteralNode _anObject) { return FixedPointLiteralNode.factory.numerator_denominator_scale_(_anObject.numerator(), _anObject.denominator(), _anObject.scale()); } @Override public FloatLiteralNode visitFloatLiteralNode_(final FloatLiteralNode _anObject) { return FloatLiteralNode.factory.valueString_(_anObject.valueString()); } @Override public GenericTypeVariableNode visitGenericTypeVariableNode_(final GenericTypeVariableNode _anObject) { return GenericTypeVariableNode.factory.root_arguments_(((TypeNode) this.visit_(_anObject.root())), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.arguments(), ((st.gravel.support.jvm.Block1<TypeNode, TypeNode>) (new st.gravel.support.jvm.Block1<TypeNode, TypeNode>() { @Override public TypeNode value_(final TypeNode _each) { return (TypeNode) NodeCopier.this.visit_(_each); } })))); } @Override public Expression visitGlobalReadNode_(final GlobalReadNode _anObject) { return GlobalReadNode.factory.namespace_name_(_anObject.namespace(), _anObject.name()); } @Override public GlobalWriteNode visitGlobalWriteNode_(final GlobalWriteNode _anObject) { return GlobalWriteNode.factory.namespace_name_value_(_anObject.namespace(), _anObject.name(), ((Expression) this.visit_(_anObject.value()))); } @Override public HolderDeclarationNode visitHolderDeclarationNode_(final HolderDeclarationNode _anObject) { return HolderDeclarationNode.factory.name_type_(_anObject.name(), ((TypeNode) this.visit_(_anObject.type()))); } @Override public IdentityComparisonNode visitIdentityComparisonNode_(final IdentityComparisonNode _anObject) { return IdentityComparisonNode.factory.left_right_(((Expression) this.visit_(_anObject.left())), ((Expression) this.visit_(_anObject.right()))); } @Override public IfTrueIfFalseNode visitIfTrueIfFalseNode_(final IfTrueIfFalseNode _anObject) { return IfTrueIfFalseNode.factory.test_trueSequence_falseSequence_returnType_(((Expression) this.visit_(_anObject.test())), ((SequenceNode) this.visit_(_anObject.trueSequence())), ((SequenceNode) this.visit_(_anObject.falseSequence())), ((TypeNode) this.visit_(_anObject.returnType()))); } @Override public InlineExpressionCollection visitInlineExpressionCollection_(final InlineExpressionCollection _anObject) { return InlineExpressionCollection.factory.expressions_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.expressions(), ((st.gravel.support.jvm.Block1<Expression, Expression>) (new st.gravel.support.jvm.Block1<Expression, Expression>() { @Override public Expression value_(final Expression _each) { return (Expression) NodeCopier.this.visit_(_each); } })))); } @Override public InstanceCreationNode visitInstanceCreationNode_(final InstanceCreationNode _anObject) { return InstanceCreationNode.factory.reference_(_anObject.reference()); } @Override public InstanceTypeNode visitInstanceTypeNode_(final InstanceTypeNode _anObject) { return InstanceTypeNode.factory.basicNew(); } @Override public IntegerLiteralNode visitIntegerLiteralNode_(final IntegerLiteralNode _anObject) { return IntegerLiteralNode.factory.integer_(_anObject.integer()); } @Override public IntermediateNode visitIntermediateNode_(final IntermediateNode _anObject) { return IntermediateNode.factory.basicNew(); } @Override public IntermediateStatement visitIntermediateStatement_(final IntermediateStatement _anObject) { return IntermediateStatement.factory.basicNew(); } @Override public IsNilNode visitIsNilNode_(final IsNilNode _anObject) { return IsNilNode.factory.receiver_(((Expression) this.visit_(_anObject.receiver()))); } @Override public Statement visitKeywordMessageNode_(final KeywordMessageNode _anObject) { return KeywordMessageNode.factory.receiver_selector_arguments_(((Expression) this.visit_(_anObject.receiver())), _anObject.selector(), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.arguments(), ((st.gravel.support.jvm.Block1<Expression, Expression>) (new st.gravel.support.jvm.Block1<Expression, Expression>() { @Override public Expression value_(final Expression _each) { return (Expression) NodeCopier.this.visit_(_each); } })))); } @Override public MethodNode visitKeywordMethodNode_(final KeywordMethodNode _anObject) { final String _nlrMarker; _nlrMarker = this.produceNlrMarkerDefinition_for_(_anObject.nlrMarker(), _anObject); return KeywordMethodNode.factory.selector_arguments_body_returnType_pragmas_protocol_nlrMarker_(_anObject.selector(), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.arguments(), ((st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>) (new st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>() { @Override public VariableDeclarationNode value_(final VariableDeclarationNode _each) { return (VariableDeclarationNode) NodeCopier.this.visit_(_each); } }))), ((SequenceNode) this.visit_(_anObject.body())), ((TypeNode) this.visit_(_anObject.returnType())), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.pragmas(), ((st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>) (new st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>() { @Override public PragmaNode value_(final PragmaNode _each) { return (PragmaNode) NodeCopier.this.visit_(_each); } }))), _anObject.protocol(), _nlrMarker); } @Override public LiteralNode visitLiteralNode_(final LiteralNode _anObject) { return LiteralNode.factory.basicNew(); } @Override public Expression visitLocalReadNode_(final LocalReadNode _anObject) { return LocalReadNode.factory.name_(_anObject.name()); } @Override public LocalWriteNode visitLocalWriteNode_(final LocalWriteNode _anObject) { return LocalWriteNode.factory.name_value_(_anObject.name(), ((Expression) this.visit_(_anObject.value()))); } @Override public Expression visitMessageNode_(final MessageNode _anObject) { return MessageNode.factory.receiver_selector_(((Expression) this.visit_(_anObject.receiver())), _anObject.selector()); } @Override public MethodNode visitMethodNode_(final MethodNode _anObject) { final String _nlrMarker; _nlrMarker = this.produceNlrMarkerDefinition_for_(_anObject.nlrMarker(), _anObject); return MethodNode.factory.selector_body_returnType_pragmas_protocol_nlrMarker_(_anObject.selector(), ((SequenceNode) this.visit_(_anObject.body())), ((TypeNode) this.visit_(_anObject.returnType())), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.pragmas(), ((st.gravel.support.jvm.Block1<PragmaNode, Node>) (new st.gravel.support.jvm.Block1<PragmaNode, Node>() { @Override public PragmaNode value_(final Node _each) { return (PragmaNode) NodeCopier.this.visit_(_each); } }))), _anObject.protocol(), _nlrMarker); } @Override public NamespacedTypeVariableNode visitNamespacedTypeVariableNode_(final NamespacedTypeVariableNode _anObject) { return NamespacedTypeVariableNode.factory.path_(_anObject.path()); } @Override public NamespacedVariableNode visitNamespacedVariableNode_(final NamespacedVariableNode _anObject) { return NamespacedVariableNode.factory.path_(_anObject.path()); } @Override public NamespaceNode visitNamespaceNode_(final NamespaceNode _aNamespaceNode) { return NamespaceNode.factory.reference_publicImports_privateImports_sharedVariables_(_aNamespaceNode.reference(), _aNamespaceNode.publicImports(), _aNamespaceNode.privateImports(), st.gravel.support.jvm.ArrayExtensions.collect_(_aNamespaceNode.sharedVariables(), ((st.gravel.support.jvm.Block1<SharedDeclarationNode, SharedDeclarationNode>) (new st.gravel.support.jvm.Block1<SharedDeclarationNode, SharedDeclarationNode>() { @Override public SharedDeclarationNode value_(final SharedDeclarationNode _each) { return (SharedDeclarationNode) NodeCopier.this.visit_(_each); } })))); } @Override public NilLiteralNode visitNilLiteralNode_(final NilLiteralNode _anObject) { return NilLiteralNode.factory.basicNew(); } @Override public Node visitNode_(final Node _anObject) { return Node.factory.basicNew(); } @Override public Statement visitNonLocalReturnNode_(final NonLocalReturnNode _anObject) { return NonLocalReturnNode.factory.marker_value_(_anObject.marker(), ((Expression) this.visit_(_anObject.value()))); } @Override public PackageNode visitPackageNode_(final PackageNode _anObject) { return PackageNode.factory.name_classes_namespaces_(_anObject.name(), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.classes(), ((st.gravel.support.jvm.Block1<ClassNode, ClassNode>) (new st.gravel.support.jvm.Block1<ClassNode, ClassNode>() { @Override public ClassNode value_(final ClassNode _each) { return (ClassNode) NodeCopier.this.visit_(_each); } }))), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.namespaces(), ((st.gravel.support.jvm.Block1<NamespaceNode, NamespaceNode>) (new st.gravel.support.jvm.Block1<NamespaceNode, NamespaceNode>() { @Override public NamespaceNode value_(final NamespaceNode _each) { return (NamespaceNode) NodeCopier.this.visit_(_each); } })))); } @Override public PragmaNode visitPragmaNode_(final PragmaNode _anObject) { return PragmaNode.factory.expression_(((MessageNode) this.visit_(_anObject.expression()))); } @Override public ReadHolderNode visitReadHolderNode_(final ReadHolderNode _anObject) { return ReadHolderNode.factory.varName_(_anObject.varName()); } @Override public ReferenceLiteralNode visitReferenceLiteralNode_(final ReferenceLiteralNode _anObject) { return ReferenceLiteralNode.factory.path_(_anObject.path()); } @Override public Statement visitReturnNode_(final ReturnNode _anObject) { return ReturnNode.factory.value_(((Expression) this.visit_(_anObject.value()))); } @Override public Expression visitSelfNode_(final SelfNode _anObject) { return _anObject; } @Override public SelfTypeNode visitSelfTypeNode_(final SelfTypeNode _anObject) { return SelfTypeNode.factory.basicNew(); } @Override public SequenceNode visitSequenceNode_(final SequenceNode _anObject) { return SequenceNode.factory.temporaries_statements_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.temporaries(), ((st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>) (new st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>() { @Override public VariableDeclarationNode value_(final VariableDeclarationNode _each) { return (VariableDeclarationNode) NodeCopier.this.visit_(_each); } }))), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.statements(), ((st.gravel.support.jvm.Block1<Statement, Statement>) (new st.gravel.support.jvm.Block1<Statement, Statement>() { @Override public Statement value_(final Statement _each) { return (Statement) NodeCopier.this.visit_(_each); } })))); } @Override public SharedDeclarationNode visitSharedDeclarationNode_(final SharedDeclarationNode _anObject) { return SharedDeclarationNode.factory.name_initializer_(_anObject.name(), ((Expression) this.visit_(_anObject.initializer()))); } @Override public StateAccessNode visitStateAccessNode_(final StateAccessNode _anObject) { return StateAccessNode.factory.basicNew(); } @Override public Statement visitStatement_(final Statement _anObject) { return Statement.factory.basicNew(); } @Override public StringLiteralNode visitStringLiteralNode_(final StringLiteralNode _anObject) { return StringLiteralNode.factory.value_(_anObject.value()); } @Override public SuperNode visitSuperNode_(final SuperNode _anObject) { return SuperNode.factory.reference_(_anObject.reference()); } @Override public SymbolLiteralNode visitSymbolLiteralNode_(final SymbolLiteralNode _anObject) { return SymbolLiteralNode.factory.value_(_anObject.value()); } @Override public ToDoNode visitToDoNode_(final ToDoNode _anObject) { return ToDoNode.factory.start_stop_step_counterName_doSequence_(((Expression) this.visit_(_anObject.start())), ((Expression) this.visit_(_anObject.stop())), ((Expression) this.visit_(_anObject.step())), _anObject.counterName(), ((SequenceNode) this.visit_(_anObject.doSequence()))); } @Override public TypeCast visitTypeCast_(final TypeCast _aTypeCast) { return TypeCast.factory.type_expression_(((TypeNode) this.visit_(_aTypeCast.type())), ((Expression) this.visit_(_aTypeCast.expression()))); } @Override public TypeDefNode visitTypeDefNode_(final TypeDefNode _anObject) { return TypeDefNode.factory.node_(((TypeNode) this.visit_(_anObject.node()))); } @Override public TypeNode visitTypeNode_(final TypeNode _anObject) { return TypeNode.factory.basicNew(); } @Override public TypeNode visitTypeOrNode_(final TypeOrNode _anObject) { return TypeOrNode.factory.left_right_(((TypeNode) this.visit_(_anObject.left())), ((TypeNode) this.visit_(_anObject.right()))); } @Override public TypeVariableNode visitTypeVariableNode_(final TypeVariableNode _anObject) { return TypeVariableNode.factory.name_(_anObject.name()); } @Override public Statement visitUnaryMessageNode_(final UnaryMessageNode _anObject) { return UnaryMessageNode.factory.receiver_selector_(((Expression) this.visit_(_anObject.receiver())), _anObject.selector()); } @Override public MethodNode visitUnaryMethodNode_(final UnaryMethodNode _anObject) { final String _nlrMarker; _nlrMarker = this.produceNlrMarkerDefinition_for_(_anObject.nlrMarker(), _anObject); return UnaryMethodNode.factory.selector_body_returnType_pragmas_protocol_nlrMarker_(_anObject.selector(), ((SequenceNode) this.visit_(_anObject.body())), ((TypeNode) this.visit_(_anObject.returnType())), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.pragmas(), ((st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>) (new st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>() { @Override public PragmaNode value_(final PragmaNode _each) { return (PragmaNode) NodeCopier.this.visit_(_each); } }))), _anObject.protocol(), _nlrMarker); } @Override public VariableDeclarationNode visitVariableDeclarationNode_(final VariableDeclarationNode _anObject) { return VariableDeclarationNode.factory.name_type_(_anObject.name(), ((TypeNode) this.visit_(_anObject.type()))); } @Override public Expression visitVariableNode_(final VariableNode _anObject) { return VariableNode.factory.name_(_anObject.name()); } @Override public WhileFalseNode visitWhileFalseNode_(final WhileFalseNode _anObject) { return WhileFalseNode.factory.testSequence_doSequence_(((SequenceNode) this.visit_(_anObject.testSequence())), ((SequenceNode) this.visit_(_anObject.doSequence()))); } @Override public WhileNode visitWhileNode_(final WhileNode _anObject) { return WhileNode.factory.testSequence_doSequence_(((SequenceNode) this.visit_(_anObject.testSequence())), ((SequenceNode) this.visit_(_anObject.doSequence()))); } @Override public WhileTrueNode visitWhileTrueNode_(final WhileTrueNode _anObject) { return WhileTrueNode.factory.testSequence_doSequence_(((SequenceNode) this.visit_(_anObject.testSequence())), ((SequenceNode) this.visit_(_anObject.doSequence()))); } @Override public WriteHolderNode visitWriteHolderNode_(final WriteHolderNode _anObject) { return WriteHolderNode.factory.varName_value_(_anObject.varName(), ((Expression) this.visit_(_anObject.value()))); } @Override public Node visit_(final Node _anObject) { final Node _newNode; if (_anObject == null) { return null; } _newNode = ((Node) _anObject.accept_(this)); if (_newNode == null) { return null; } return _newNode.withSourcePosition_(_anObject.sourcePosition()); } }