package st.gravel.support.compiler.jvm;
/*
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.jvm.JVMInstruction;
import st.gravel.support.compiler.jvm.ALoad;
import st.gravel.support.compiler.jvm.AndThenElse;
import st.gravel.support.compiler.jvm.AReturn;
import st.gravel.support.compiler.jvm.ArrayLength;
import st.gravel.support.compiler.jvm.AStore;
import st.gravel.support.compiler.jvm.Store;
import st.gravel.support.compiler.jvm.AThrow;
import st.gravel.support.compiler.jvm.Breakpoint;
import st.gravel.support.compiler.jvm.ByteArrayStore;
import st.gravel.support.compiler.jvm.CastArrayToObject;
import st.gravel.support.compiler.jvm.CastBooleanToObject;
import st.gravel.support.compiler.jvm.CastByteToObject;
import st.gravel.support.compiler.jvm.CastCharToObject;
import st.gravel.support.compiler.jvm.CastDefinedToObject;
import st.gravel.support.compiler.jvm.CastDoubleToObject;
import st.gravel.support.compiler.jvm.CastFloatToObject;
import st.gravel.support.compiler.jvm.CastIntToObject;
import st.gravel.support.compiler.jvm.CastLongToObject;
import st.gravel.support.compiler.jvm.CastObjectToArray;
import st.gravel.support.compiler.jvm.CastObjectToBoolean;
import st.gravel.support.compiler.jvm.CastObjectToByte;
import st.gravel.support.compiler.jvm.CastObjectToChar;
import st.gravel.support.compiler.jvm.CastObjectToDefined;
import st.gravel.support.compiler.jvm.CastObjectToDouble;
import st.gravel.support.compiler.jvm.CastObjectToFloat;
import st.gravel.support.compiler.jvm.CastObjectToInt;
import st.gravel.support.compiler.jvm.CastObjectToLong;
import st.gravel.support.compiler.jvm.CastObjectToShort;
import st.gravel.support.compiler.jvm.CastTo;
import st.gravel.support.compiler.jvm.Dup;
import st.gravel.support.compiler.jvm.DupX1;
import st.gravel.support.compiler.jvm.DupX2;
import st.gravel.support.compiler.jvm.DynamicCreateInstance;
import st.gravel.support.compiler.jvm.DynamicFieldRead;
import st.gravel.support.compiler.jvm.DynamicFieldWrite;
import st.gravel.support.compiler.jvm.DynamicGlobalRead;
import st.gravel.support.compiler.jvm.DynamicGlobalWrite;
import st.gravel.support.compiler.jvm.DynamicLiteralBlockMessageSend;
import st.gravel.support.compiler.jvm.DynamicMessageSend;
import st.gravel.support.compiler.jvm.DynamicSend;
import st.gravel.support.compiler.jvm.DynamicSuperSend;
import st.gravel.support.compiler.jvm.Fork;
import st.gravel.support.compiler.jvm.Frame;
import st.gravel.support.compiler.jvm.GetField;
import st.gravel.support.compiler.jvm.GetStatic;
import st.gravel.support.compiler.jvm.IdentityCast;
import st.gravel.support.compiler.jvm.IfBooleanObjectThenElse;
import st.gravel.support.compiler.jvm.IfBooleanValueThenElse;
import st.gravel.support.compiler.jvm.IfObjectIsNullThenElse;
import st.gravel.support.compiler.jvm.IfObjectsEqualThenElse;
import st.gravel.support.compiler.jvm.IfThenElse;
import st.gravel.support.compiler.jvm.ILoad;
import st.gravel.support.compiler.jvm.IncrementLocal;
import st.gravel.support.compiler.jvm.InvokeInterface;
import st.gravel.support.compiler.jvm.InvokeSpecial;
import st.gravel.support.compiler.jvm.InvokeStatic;
import st.gravel.support.compiler.jvm.InvokeVirtual;
import st.gravel.support.compiler.jvm.IStore;
import st.gravel.support.compiler.jvm.JVMControlFlowInstruction;
import st.gravel.support.compiler.jvm.LabelLineNumber;
import st.gravel.support.compiler.jvm.Load;
import st.gravel.support.compiler.jvm.Loop;
import st.gravel.support.compiler.jvm.NewArray;
import st.gravel.support.compiler.jvm.NewInstance;
import st.gravel.support.compiler.jvm.ObjectArrayLoad;
import st.gravel.support.compiler.jvm.ObjectArrayStore;
import st.gravel.support.compiler.jvm.OrThenElse;
import st.gravel.support.compiler.jvm.Pop;
import st.gravel.support.compiler.jvm.PushBoolean;
import st.gravel.support.compiler.jvm.PushChar;
import st.gravel.support.compiler.jvm.PushConstant;
import st.gravel.support.compiler.jvm.PushDouble;
import st.gravel.support.compiler.jvm.PushFalse;
import st.gravel.support.compiler.jvm.PushFloat;
import st.gravel.support.compiler.jvm.PushInt;
import st.gravel.support.compiler.jvm.PushNull;
import st.gravel.support.compiler.jvm.PushString;
import st.gravel.support.compiler.jvm.PushTrue;
import st.gravel.support.compiler.jvm.PutField;
import st.gravel.support.compiler.jvm.PutStatic;
import st.gravel.support.compiler.jvm.Return;
import st.gravel.support.compiler.jvm.Subtract;
import st.gravel.support.compiler.jvm.TryCatch;
import st.gravel.support.compiler.jvm.WhileFalseLoop;
import st.gravel.support.compiler.jvm.WhileGreaterThanLoop;
import st.gravel.support.compiler.jvm.WhileLessThanLoop;
import st.gravel.support.compiler.jvm.WhileLoop;
import st.gravel.support.compiler.jvm.WhileTrueLoop;
public class JVMInstructionVisitor<X> extends Object implements Cloneable {
public static JVMInstructionVisitor_Factory factory = new JVMInstructionVisitor_Factory();
public static class JVMInstructionVisitor_Factory<X> extends st.gravel.support.jvm.SmalltalkFactory {
public JVMInstructionVisitor<X> basicNew() {
JVMInstructionVisitor<X> newInstance = new JVMInstructionVisitor<X>();
newInstance.initialize();
return newInstance;
}
}
public JVMInstructionVisitor<X> copy() {
try {
JVMInstructionVisitor<X> _temp1 = (JVMInstructionVisitor<X>) this.clone();
_temp1.postCopy();
return _temp1;
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
public JVMInstructionVisitor_Factory<X> factory() {
return factory;
}
public JVMInstructionVisitor initialize() {
return this;
}
public JVMInstructionVisitor<X> postCopy() {
return this;
}
public X visitALoad_(final ALoad _anObject) {
return this.visitLoad_(_anObject);
}
public X visitAndThenElse_(final AndThenElse _anObject) {
return this.visitFork_(_anObject);
}
public X visitAReturn_(final AReturn _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitArrayLength_(final ArrayLength _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitAStore_(final AStore _anObject) {
return this.visitStore_(((Store) _anObject));
}
public X visitAThrow_(final AThrow _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitBreakpoint_(final Breakpoint _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitByteArrayStore_(final ByteArrayStore _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitCastArrayToObject_(final CastArrayToObject _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastBooleanToObject_(final CastBooleanToObject _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastByteToObject_(final CastByteToObject _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastCharToObject_(final CastCharToObject _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastDefinedToObject_(final CastDefinedToObject _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastDoubleToObject_(final CastDoubleToObject _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastFloatToObject_(final CastFloatToObject _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastIntToObject_(final CastIntToObject _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastLongToObject_(final CastLongToObject _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastObjectToArray_(final CastObjectToArray _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastObjectToBoolean_(final CastObjectToBoolean _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastObjectToByte_(final CastObjectToByte _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastObjectToChar_(final CastObjectToChar _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastObjectToDefined_(final CastObjectToDefined _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastObjectToDouble_(final CastObjectToDouble _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastObjectToFloat_(final CastObjectToFloat _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastObjectToInt_(final CastObjectToInt _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastObjectToLong_(final CastObjectToLong _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastObjectToShort_(final CastObjectToShort _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitCastTo_(final CastTo _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitDupX1_(final DupX1 _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitDupX2_(final DupX2 _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitDup_(final Dup _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitDynamicCreateInstance_(final DynamicCreateInstance _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitDynamicFieldRead_(final DynamicFieldRead _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitDynamicFieldWrite_(final DynamicFieldWrite _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitDynamicGlobalRead_(final DynamicGlobalRead _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitDynamicGlobalWrite_(final DynamicGlobalWrite _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitDynamicLiteralBlockMessageSend_(final DynamicLiteralBlockMessageSend _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitDynamicMessageSend_(final DynamicMessageSend _anObject) {
return this.visitDynamicSend_(_anObject);
}
public X visitDynamicSend_(final DynamicSend _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitDynamicSuperSend_(final DynamicSuperSend _anObject) {
return this.visitDynamicSend_(_anObject);
}
public X visitFork_(final Fork _anObject) {
return this.visitJVMControlFlowInstruction_(_anObject);
}
public X visitFrame_(final Frame _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitGetField_(final GetField _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitGetStatic_(final GetStatic _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitIdentityCast_(final IdentityCast _anObject) {
return this.visitCastTo_(_anObject);
}
public X visitIfBooleanObjectThenElse_(final IfBooleanObjectThenElse _anObject) {
return this.visitIfThenElse_(_anObject);
}
public X visitIfBooleanValueThenElse_(final IfBooleanValueThenElse _anObject) {
return this.visitIfThenElse_(_anObject);
}
public X visitIfObjectIsNullThenElse_(final IfObjectIsNullThenElse _anObject) {
return this.visitFork_(_anObject);
}
public X visitIfObjectsEqualThenElse_(final IfObjectsEqualThenElse _anObject) {
return this.visitFork_(_anObject);
}
public X visitIfThenElse_(final IfThenElse _anObject) {
return this.visitFork_(_anObject);
}
public X visitILoad_(final ILoad _anObject) {
return this.visitLoad_(_anObject);
}
public X visitIncrementLocal_(final IncrementLocal _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitInvokeInterface_(final InvokeInterface _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitInvokeSpecial_(final InvokeSpecial _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitInvokeStatic_(final InvokeStatic _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitInvokeVirtual_(final InvokeVirtual _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitIStore_(final IStore _anObject) {
return this.visitStore_(((Store) _anObject));
}
public X visitJVMControlFlowInstruction_(final JVMControlFlowInstruction _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitJVMInstruction_(final JVMInstruction _anObject) {
throw new RuntimeException("VisitorError");
}
public X visitLabelLineNumber_(final LabelLineNumber _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitLoad_(final Load _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitLoop_(final Loop _anObject) {
return this.visitJVMControlFlowInstruction_(_anObject);
}
public X visitNewArray_(final NewArray _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitNewInstance_(final NewInstance _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitObjectArrayLoad_(final ObjectArrayLoad _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitObjectArrayStore_(final ObjectArrayStore _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitOrThenElse_(final OrThenElse _anObject) {
return this.visitFork_(_anObject);
}
public X visitPop_(final Pop _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitPushBoolean_(final PushBoolean _anObject) {
return this.visitPushConstant_(_anObject);
}
public X visitPushChar_(final PushChar _anObject) {
return this.visitPushConstant_(_anObject);
}
public X visitPushConstant_(final PushConstant _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitPushDouble_(final PushDouble _anObject) {
return this.visitPushConstant_(_anObject);
}
public X visitPushFalse_(final PushFalse _anObject) {
return this.visitPushBoolean_(_anObject);
}
public X visitPushFloat_(final PushFloat _anObject) {
return this.visitPushConstant_(_anObject);
}
public X visitPushInt_(final PushInt _anObject) {
return this.visitPushConstant_(_anObject);
}
public X visitPushNull_(final PushNull _anObject) {
return this.visitPushConstant_(_anObject);
}
public X visitPushString_(final PushString _anObject) {
return this.visitPushConstant_(_anObject);
}
public X visitPushTrue_(final PushTrue _anObject) {
return this.visitPushBoolean_(_anObject);
}
public X visitPutField_(final PutField _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitPutStatic_(final PutStatic _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitReturn_(final Return _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitStore_(final Store _anObject) {
return this.visitJVMInstruction_(((JVMInstruction) _anObject));
}
public X visitSubtract_(final Subtract _anObject) {
return this.visitJVMInstruction_(_anObject);
}
public X visitTryCatch_(final TryCatch _anObject) {
return this.visitJVMControlFlowInstruction_(_anObject);
}
public X visitWhileFalseLoop_(final WhileFalseLoop _anObject) {
return this.visitWhileLoop_(_anObject);
}
public X visitWhileGreaterThanLoop_(final WhileGreaterThanLoop _anObject) {
return this.visitWhileLoop_(_anObject);
}
public X visitWhileLessThanLoop_(final WhileLessThanLoop _anObject) {
return this.visitWhileLoop_(_anObject);
}
public X visitWhileLoop_(final WhileLoop _anObject) {
return this.visitLoop_(_anObject);
}
public X visitWhileTrueLoop_(final WhileTrueLoop _anObject) {
return this.visitWhileLoop_(_anObject);
}
public X visit_(final JVMInstruction _anObject) {
return _anObject.accept_(this);
}
}