## org.codehaus.groovy.classgen
Class Key

Field Summary
`int` | `hash`
`String` | `name`
`def` | `params`

Constructor Summary
`Key(String name, def params)`

Method Summary
`void` | `addGeneratedClosureConstructorCall(ConstructorCallExpression call)`
`boolean` | `addInnerClass(ClassNode innerClass)`
`void` | `addVariableNames(Expression expression, List list)`
`static int` | `argumentSize(Expression arguments)`
`boolean` | `argumentsUseStack(Expression arguments)` which case the arguments are evaluated first, stored in the variable stack and then reloaded to make a method call
`static boolean` | `containsSpreadExpression(Expression arguments)`
`ClassNode` | `createClosureClass(ClosureExpression expression)`
`void` | `createInterfaceSyntheticStaticFields()`
`Expression` | `createReturnLHSExpression(Expression expression)` For assignment expressions, return a safe expression for the LHS we can use to return the value
`Expression` | `createReusableExpression(Expression expression)`
`void` | `createSyntheticStaticFields()`
`void` | `despreadList(List expressions, boolean wrap)`
`void` | `doConvertAndCast(ClassNode type, Expression expression, boolean ignoreAutoboxing, boolean forceCast, boolean coerce)` Casts to the given type unless it can be determined that the cast is unnecessary
`void` | `doConvertAndCast(ClassNode type)`
`void` | `doConvertAndCast(ClassNode type, boolean coerce)`
`boolean` | `emptyArguments(Expression arguments)`
`boolean` | `equalParameterTypes(def p1, def p2)`
`boolean` | `equals(Object obj)`
`void` | `evaluateBinaryExpression(String method, BinaryExpression expression)`
`void` | `evaluateBinaryExpression(MethodCaller compareMethod, BinaryExpression expression)`
`void` | `evaluateBinaryExpressionWithAssignment(String method, BinaryExpression expression)`
`void` | `evaluateCompareTo(BinaryExpression expression)`
`void` | `evaluateEqual(BinaryExpression expression)`
`void` | `evaluateExpression(Expression expression)`
`void` | `evaluateInstanceof(BinaryExpression expression)`
`void` | `evaluateLogicalAndExpression(BinaryExpression expression)`
`void` | `evaluateLogicalOrExpression(BinaryExpression expression)`
`void` | `evaluatePostfixMethod(String method, Expression expression)`
`void` | `evaluatePrefixMethod(String method, Expression expression)`
`void` | `execMethodAndStoreForSubscriptOperator(String method, Expression expression)`
`void` | `generateMopCalls(LinkedList mopCalls, boolean useThis)` generates a Meta Object Protocoll method, that is used to call a non public method, or to make a call to super.
`AnnotationVisitor` | `getAnnotationVisitor(AnnotatedNode targetNode, AnnotationNode an, Object visitor)`
`int` | `getBytecodeVersion()`
`def` | `getClosureSharedVariables(ClosureExpression ce)`
`CompileUnit` | `getCompileUnit()`
`ClassNode` | `getExpressionType(Expression expression)` then this method returns the type - otherwise null
`ClassNode` | `getLHSType(Expression leftExpression)` Deduces the type name required for some casting
`static String` | `getMopMethodName(MethodNode method, boolean useThis)` creates a MOP method name from a method
`ClassNode` | `getOutermostClass()`
`static String` | `getStaticFieldName(ClassNode type)`
`int` | `hashCode()`
`boolean` | `isComparisonExpression(Expression expression)`
`boolean` | `isFieldOrVariable(String name)`
`boolean` | `isGroovyObject(Expression objectExpression)`
`boolean` | `isHolderVariable(Expression expression)`
`boolean` | `isInClosure()`
`boolean` | `isInClosureConstructor()`
`boolean` | `isInScriptBody()` local variables but are properties
`boolean` | `isInnerClass()`
`static boolean` | `isMopMethod(String methodName)` method to determine if a method is a MOP method.
`boolean` | `isNonStaticField(Expression expression)`
`boolean` | `isPopRequired(Expression expression)` that must be popped
`boolean` | `isStaticContext()`
`boolean` | `isStaticInvocation(MethodCallExpression call)`
`boolean` | `isStaticMethod()`
`static boolean` | `isSuperExpression(Expression expression)`
`static boolean` | `isThisExpression(Expression expression)`
`static boolean` | `isThisOrSuper(Expression expression)`
`boolean` | `isValidTypeForCast(ClassNode type)`
`boolean` | `isVargs(def p)`
`void` | `load(Expression exp)`
`void` | `loadDynamicName(Expression name)`
`void` | `loadInstanceField(FieldExpression fldExp)` RHS instance field. should move most of the code in the BytecodeHelper
`void` | `loadStaticField(FieldExpression fldExp)`
`void` | `loadThis()`
`void` | `loadThisOrOwner()` Loads either this object or if we're inside a closure then load the top level owner
`void` | `loadWrapper(Expression argument)`
`void` | `makeCall(Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis)`
`void` | `makeCall(ClassExpression sender, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis)`
`static String` | `makeFieldClassName(ClassNode type)`
`void` | `makeInvokeMethodCall(MethodCallExpression call, boolean useSuper, MethodCallerMultiAdapter adapter)`
`void` | `onLineNumber(ASTNode statement, String message)`
`void` | `processClassVariable(String name)`
`void` | `processFieldAccess(String name, FieldNode field, int steps)`
`void` | `processStackVariable(Variable variable)`
`void` | `removeInitialValues(def params)` this method is called for local variables shared between scopes.
`List` | `sortConstructors(ConstructorCallExpression call, ClassNode callNode)`
`void` | `storeStaticField(FieldExpression expression)`
`void` | `storeThisInstanceField(FieldExpression expression)`
`void` | `throwException(String s)`
`static boolean` | `usesSuper(MethodCallExpression call)`
`static boolean` | `usesSuper(PropertyExpression pe)`
`void` | `visitAndAutoboxBoolean(Expression expression)`
`void` | `visitAnnotationAttributes(AnnotationNode an, AnnotationVisitor av)` Generate the annotation attributes.
`void` | `visitAnnotations(AnnotatedNode node)` Note: ignore it.
`void` | `visitAnnotations(AnnotatedNode targetNode, Object visitor)`
`void` | `visitArgumentlistExpression(ArgumentListExpression ale)`
`void` | `visitArrayAttributes(AnnotationNode an, Map arrayAttr, AnnotationVisitor av)`
`void` | `visitArrayExpression(ArrayExpression expression)`
`void` | `visitAssertStatement(AssertStatement statement)`
`void` | `visitAttributeExpression(AttributeExpression expression)`
`void` | `visitAttributeOrProperty(PropertyExpression expression, MethodCallerMultiAdapter adapter)`
`void` | `visitBinaryExpression(BinaryExpression expression)`
`void` | `visitBitwiseNegationExpression(BitwiseNegationExpression expression)`
`void` | `visitBlockStatement(BlockStatement block)`
`void` | `visitBooleanExpression(BooleanExpression expression)` return a primitive boolean value of the BooleanExpresion.
`void` | `visitBreakStatement(BreakStatement statement)`
`void` | `visitBytecodeSequence(BytecodeSequence bytecodeSequence)`
`void` | `visitCaseStatement(CaseStatement statement)`
`void` | `visitCaseStatement(CaseStatement statement, int switchVariableIndex, Label thisLabel, Label nextLabel)`
`void` | `visitCastExpression(CastExpression expression)`
`void` | `visitClassExpression(ClassExpression expression)` load class object on stack
`void` | `visitClosureExpression(ClosureExpression expression)`
`void` | `visitClosureListExpression(ClosureListExpression expression)`
`void` | `visitConstantExpression(ConstantExpression expression)` Generate byte code for constants
`void` | `visitConstructor(ConstructorNode node)`
`void` | `visitConstructorCallExpression(ConstructorCallExpression call)`
`void` | `visitConstructorOrMethod(MethodNode node, boolean isConstructor)`
`void` | `visitContinueStatement(ContinueStatement statement)`
`void` | `visitDeclarationExpression(DeclarationExpression expression)`
`void` | `visitDoWhileLoop(DoWhileStatement loop)`
`void` | `visitExpressionOrStatement(Object o)`
`void` | `visitExpressionStatement(ExpressionStatement statement)`
`void` | `visitField(FieldNode fieldNode)`
`void` | `visitFieldExpression(FieldExpression expression)`
`void` | `visitForLoop(ForStatement loop)`
`void` | `visitForLoopWithClosureList(ForStatement loop)`
`void` | `visitGStringExpression(GStringExpression expression)`
`void` | `visitIfElse(IfStatement ifElse)`
`void` | `visitListExpression(ListExpression expression)`
`void` | `visitMapEntryExpression(MapEntryExpression expression)`
`void` | `visitMapExpression(MapExpression expression)`
`void` | `visitMethod(MethodNode node)`
`void` | `visitMethodCallExpression(MethodCallExpression call)`
`void` | `visitMethodPointerExpression(MethodPointerExpression expression)`
`void` | `visitNotExpression(NotExpression expression)`
`void` | `visitOuterFieldExpression(FieldExpression expression, ClassNode outerClassNode, int steps, boolean first)`
`void` | `visitParameterAnnotations(Parameter parameter, int paramNumber, MethodVisitor mv)`
`void` | `visitPostfixExpression(PostfixExpression expression)`
`void` | `visitPrefixExpression(PrefixExpression expression)`
`void` | `visitProperty(PropertyNode statement)`
`void` | `visitPropertyExpression(PropertyExpression expression)`
`void` | `visitRangeExpression(RangeExpression expression)`
`void` | `visitRegexExpression(RegexExpression expression)`
`void` | `visitReturnStatement(ReturnStatement statement)`
`void` | `visitSpecialConstructorCall(ConstructorCallExpression call)`
`void` | `visitSpreadExpression(SpreadExpression expression)`
`void` | `visitSpreadMapExpression(SpreadMapExpression expression)`
`void` | `visitStatement(Statement statement)`
`void` | `visitStaticMethodCallExpression(StaticMethodCallExpression call)`
`void` | `visitSwitch(SwitchStatement statement)`
`void` | `visitSynchronizedStatement(SynchronizedStatement statement)`
`void` | `visitTernaryExpression(TernaryExpression expression)`
`void` | `visitThrowStatement(ThrowStatement statement)`
`void` | `visitTryCatchFinally(TryCatchStatement statement)`
`void` | `visitTupleExpression(TupleExpression expression)`
`void` | `visitTupleExpression(TupleExpression expression, boolean useWrapper)`
`void` | `visitUnaryMinusExpression(UnaryMinusExpression expression)`
`void` | `visitUnaryPlusExpression(UnaryPlusExpression expression)`
`void` | `visitVariableExpression(VariableExpression expression)` Visits a bare (unqualified) variable expression.
`void` | `visitWhileLoop(WhileStatement loop)`

Constructor Detail

### Key

    public Key(String name, def params)

Method Detail

### addGeneratedClosureConstructorCall

    void addGeneratedClosureConstructorCall(ConstructorCallExpression call)

### addInnerClass

    boolean addInnerClass(ClassNode innerClass)

### addVariableNames

    void addVariableNames(Expression expression, List list)

### argumentSize

    static int argumentSize(Expression arguments)

### argumentsUseStack

    boolean argumentsUseStack(Expression arguments)

  return:
    true if the given argument expression requires the stack, in
  which case the arguments are evaluated first, stored in the variable stack and then reloaded to make a method call

### containsSpreadExpression

    static boolean containsSpreadExpression(Expression arguments)

### createClosureClass

    ClassNode createClosureClass(ClosureExpression expression)

### createInterfaceSyntheticStaticFields

    void createInterfaceSyntheticStaticFields()

### createReturnLHSExpression

    Expression createReturnLHSExpression(Expression expression)

  For assignment expressions, return a safe expression for the LHS we can use to return the value

### createReusableExpression

    Expression createReusableExpression(Expression expression)

### createSyntheticStaticFields

    void createSyntheticStaticFields()

### despreadList

    void despreadList(List expressions, boolean wrap)

### doConvertAndCast

    void doConvertAndCast(ClassNode type, Expression expression, boolean ignoreAutoboxing, boolean forceCast, boolean coerce)

  Casts to the given type unless it can be determined that the cast is unnecessary

### doConvertAndCast

    void doConvertAndCast(ClassNode type)

### doConvertAndCast

    void doConvertAndCast(ClassNode type, boolean coerce)

### emptyArguments

    boolean emptyArguments(Expression arguments)

### equalParameterTypes

    boolean equalParameterTypes(def p1, def p2)

### equals

    public boolean equals(Object obj)

### evaluateBinaryExpression

    void evaluateBinaryExpression(String method, BinaryExpression expression)

### evaluateBinaryExpression

    void evaluateBinaryExpression(MethodCaller compareMethod, BinaryExpression expression)

### evaluateBinaryExpressionWithAssignment

    void evaluateBinaryExpressionWithAssignment(String method, BinaryExpression expression)

### evaluateCompareTo

    void evaluateCompareTo(BinaryExpression expression)

### evaluateEqual

    void evaluateEqual(BinaryExpression expression)

### evaluateExpression

    void evaluateExpression(Expression expression)

  param:
    expression

### evaluateInstanceof

    void evaluateInstanceof(BinaryExpression expression)

### evaluateLogicalAndExpression

    void evaluateLogicalAndExpression(BinaryExpression expression)

### evaluateLogicalOrExpression

    void evaluateLogicalOrExpression(BinaryExpression expression)

### evaluatePostfixMethod

    void evaluatePostfixMethod(String method, Expression expression)

### evaluatePrefixMethod

    void evaluatePrefixMethod(String method, Expression expression)

### execMethodAndStoreForSubscriptOperator

    void execMethodAndStoreForSubscriptOperator(String method, Expression expression)

### generateMopCalls

    void generateMopCalls(LinkedList mopCalls, boolean useThis)

  generates a Meta Object Protocoll method, that is used to call a non public method, or to make a call to super.
  param:
    mopCalls list of methods a mop call method should be generated for
  param:
    useThis true if "this" should be used for the naming

### getAnnotationVisitor

    AnnotationVisitor getAnnotationVisitor(AnnotatedNode targetNode, AnnotationNode an, Object visitor)

### getBytecodeVersion

    int getBytecodeVersion()

### getClosureSharedVariables

    def getClosureSharedVariables(ClosureExpression ce)

### getCompileUnit

    CompileUnit getCompileUnit()

### getExpressionType

    ClassNode getExpressionType(Expression expression)

  return:
    if the type of the expression can be determined at compile time
  then this method returns the type - otherwise null

### getLHSType

    ClassNode getLHSType(Expression leftExpression)

  Deduces the type name required for some casting
  return:
    the type of the given (LHS) expression or null if it is java.lang.Object or it cannot be deduced

### getMopMethodName

    public static String getMopMethodName(MethodNode method, boolean useThis)

  creates a MOP method name from a method
  param:
    method the method to be called by the mop method
  param:
    useThis if true, then it is a call on "this", "super" else
  return:
    the mop method name

### getOutermostClass

    ClassNode getOutermostClass()

### getStaticFieldName

    static String getStaticFieldName(ClassNode type)

### hashCode

    public int hashCode()

### isComparisonExpression

    boolean isComparisonExpression(Expression expression)

### isFieldOrVariable

    boolean isFieldOrVariable(String name)

  return:
    true if the given name is a local variable or a field

### isGroovyObject

    boolean isGroovyObject(Expression objectExpression)

### isHolderVariable

    boolean isHolderVariable(Expression expression)

### isInClosure

    boolean isInClosure()

### isInClosureConstructor

    boolean isInClosureConstructor()

### isInScriptBody

    boolean isInScriptBody()

  return:
    true if we are in a script body, where all variables declared are no longer
  local variables but are properties

### isInnerClass

    boolean isInnerClass()

### isMopMethod

    public static boolean isMopMethod(String methodName)

  method to determine if a method is a MOP method. This is done by the method name. If the name starts with "this$" or "super$", then it is a MOP method
  param:
    methodName name of the method to test
  return:
    true if the method is a MOP method

### isNonStaticField

    boolean isNonStaticField(Expression expression)

  return:
    true if the given expression represents a non-static field

### isPopRequired

    boolean isPopRequired(Expression expression)

  return:
    true if this expression will have left a value on the stack
  that must be popped

### isStaticContext

    boolean isStaticContext()

### isStaticInvocation

    boolean isStaticInvocation(MethodCallExpression call)

### isStaticMethod

    boolean isStaticMethod()

### isSuperExpression

    static boolean isSuperExpression(Expression expression)

### isThisExpression

    static boolean isThisExpression(Expression expression)

### isThisOrSuper

    static boolean isThisOrSuper(Expression expression)

### isValidTypeForCast

    boolean isValidTypeForCast(ClassNode type)

### isVargs

    boolean isVargs(def p)

### load

    void load(Expression exp)

### loadDynamicName

    void loadDynamicName(Expression name)

### loadInstanceField

    public void loadInstanceField(FieldExpression fldExp)

  RHS instance field. should move most of the code in the BytecodeHelper
  param:
    fldExp

### loadStaticField

    public void loadStaticField(FieldExpression fldExp)

  param:
    fldExp

### loadThis

    void loadThis()

### loadThisOrOwner

    void loadThisOrOwner()

  Loads either this object or if we're inside a closure then load the top level owner

### loadWrapper

    void loadWrapper(Expression argument)

### makeCall

    void makeCall(Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis)

### makeCall

    void makeCall(ClassExpression sender, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis)

### makeFieldClassName

    static String makeFieldClassName(ClassNode type)

### makeInvokeMethodCall

    void makeInvokeMethodCall(MethodCallExpression call, boolean useSuper, MethodCallerMultiAdapter adapter)

### onLineNumber

    void onLineNumber(ASTNode statement, String message)

### processClassVariable

    void processClassVariable(String name)

### processFieldAccess

    void processFieldAccess(String name, FieldNode field, int steps)

### processStackVariable

    void processStackVariable(Variable variable)

### removeInitialValues

    void removeInitialValues(def params)

  this method is called for local variables shared between scopes. These variables must not have init values because these would then in later steps be used to create multiple versions of the same method, in this case the constructor. A closure should not have more than one constructor!

### sortConstructors

    List sortConstructors(ConstructorCallExpression call, ClassNode callNode)

### storeStaticField

    public void storeStaticField(FieldExpression expression)

### storeThisInstanceField

    public void storeThisInstanceField(FieldExpression expression)

### throwException

    void throwException(String s)

### usesSuper

    public static boolean usesSuper(MethodCallExpression call)

### usesSuper

    public static boolean usesSuper(PropertyExpression pe)

### visitAndAutoboxBoolean

    void visitAndAutoboxBoolean(Expression expression)

### visitAnnotationAttributes

    void visitAnnotationAttributes(AnnotationNode an, AnnotationVisitor av)

  Generate the annotation attributes.

### visitAnnotations

    public void visitAnnotations(AnnotatedNode node)

  Note: ignore it. Annotation generation needs the current visitor.

### visitAnnotations

    void visitAnnotations(AnnotatedNode targetNode, Object visitor)

### visitArgumentlistExpression

    public void visitArgumentlistExpression(ArgumentListExpression ale)

### visitArrayAttributes

    void visitArrayAttributes(AnnotationNode an, Map arrayAttr, AnnotationVisitor av)

### visitArrayExpression

    public void visitArrayExpression(ArrayExpression expression)

### visitAssertStatement

    public void visitAssertStatement(AssertStatement statement)

### visitAttributeExpression

    public void visitAttributeExpression(AttributeExpression expression)

### visitAttributeOrProperty

    void visitAttributeOrProperty(PropertyExpression expression, MethodCallerMultiAdapter adapter)

### visitBinaryExpression

    public void visitBinaryExpression(BinaryExpression expression)

### visitBitwiseNegationExpression

    public void visitBitwiseNegationExpression(BitwiseNegationExpression expression)

### visitBlockStatement

    public void visitBlockStatement(BlockStatement block)

### visitBooleanExpression

    public void visitBooleanExpression(BooleanExpression expression)

  return a primitive boolean value of the BooleanExpresion.
  param:
    expression

### visitBreakStatement

    public void visitBreakStatement(BreakStatement statement)

### visitBytecodeSequence

    public void visitBytecodeSequence(BytecodeSequence bytecodeSequence)

### visitCaseStatement

    public void visitCaseStatement(CaseStatement statement)

### visitCaseStatement

    public void visitCaseStatement(CaseStatement statement, int switchVariableIndex, Label thisLabel, Label nextLabel)

### visitCastExpression

    public void visitCastExpression(CastExpression expression)

### visitClassExpression

    public void visitClassExpression(ClassExpression expression)

  load class object on stack

### visitClosureExpression

    public void visitClosureExpression(ClosureExpression expression)

### visitClosureListExpression

    public void visitClosureListExpression(ClosureListExpression expression)

### visitConstantExpression

    public void visitConstantExpression(ConstantExpression expression)

  Generate byte code for constants
  see:
    Class field types

### visitConstructor

    public void visitConstructor(ConstructorNode node)

### visitConstructorCallExpression

    public void visitConstructorCallExpression(ConstructorCallExpression call)

### visitConstructorOrMethod

    void visitConstructorOrMethod(MethodNode node, boolean isConstructor)

### visitContinueStatement

    public void visitContinueStatement(ContinueStatement statement)

### visitDeclarationExpression

    public void visitDeclarationExpression(DeclarationExpression expression)

### visitDoWhileLoop

    public void visitDoWhileLoop(DoWhileStatement loop)

### visitExpressionOrStatement

    void visitExpressionOrStatement(Object o)

### visitExpressionStatement

    public void visitExpressionStatement(ExpressionStatement statement)

### visitField

    public void visitField(FieldNode fieldNode)

### visitFieldExpression

    public void visitFieldExpression(FieldExpression expression)

### visitForLoop

    public void visitForLoop(ForStatement loop)

### visitForLoopWithClosureList

    void visitForLoopWithClosureList(ForStatement loop)

### visitGStringExpression

    public void visitGStringExpression(GStringExpression expression)

### visitIfElse

    public void visitIfElse(IfStatement ifElse)

### visitListExpression

    public void visitListExpression(ListExpression expression)

### visitMapEntryExpression

    public void visitMapEntryExpression(MapEntryExpression expression)

### visitMapExpression

    public void visitMapExpression(MapExpression expression)

### visitMethod

    public void visitMethod(MethodNode node)

### visitMethodCallExpression

    public void visitMethodCallExpression(MethodCallExpression call)

### visitMethodPointerExpression

    public void visitMethodPointerExpression(MethodPointerExpression expression)

### visitNotExpression

    public void visitNotExpression(NotExpression expression)

### visitOuterFieldExpression

    void visitOuterFieldExpression(FieldExpression expression, ClassNode outerClassNode, int steps, boolean first)

### visitParameterAnnotations

    void visitParameterAnnotations(Parameter parameter, int paramNumber, MethodVisitor mv)

### visitPostfixExpression

    public void visitPostfixExpression(PostfixExpression expression)

### visitPrefixExpression

    public void visitPrefixExpression(PrefixExpression expression)

### visitProperty

    public void visitProperty(PropertyNode statement)

### visitPropertyExpression

    public void visitPropertyExpression(PropertyExpression expression)

### visitRangeExpression

    public void visitRangeExpression(RangeExpression expression)

### visitRegexExpression

    public void visitRegexExpression(RegexExpression expression)

### visitReturnStatement

    public void visitReturnStatement(ReturnStatement statement)

### visitSpecialConstructorCall

    void visitSpecialConstructorCall(ConstructorCallExpression call)

### visitSpreadExpression

    public void visitSpreadExpression(SpreadExpression expression)

### visitSpreadMapExpression

    public void visitSpreadMapExpression(SpreadMapExpression expression)

### visitStatement

    void visitStatement(Statement statement)

### visitStaticMethodCallExpression

    public void visitStaticMethodCallExpression(StaticMethodCallExpression call)

### visitSwitch

    public void visitSwitch(SwitchStatement statement)

### visitSynchronizedStatement

    public void visitSynchronizedStatement(SynchronizedStatement statement)

### visitTernaryExpression

    public void visitTernaryExpression(TernaryExpression expression)

### visitThrowStatement

    public void visitThrowStatement(ThrowStatement statement)

### visitTryCatchFinally

    public void visitTryCatchFinally(TryCatchStatement statement)

### visitTupleExpression

    public void visitTupleExpression(TupleExpression expression)

### visitTupleExpression

    void visitTupleExpression(TupleExpression expression, boolean useWrapper)

### visitUnaryMinusExpression

    public void visitUnaryMinusExpression(UnaryMinusExpression expression)

### visitUnaryPlusExpression

    public void visitUnaryPlusExpression(UnaryPlusExpression expression)

### visitVariableExpression

    public void visitVariableExpression(VariableExpression expression)

  Visits a bare (unqualified) variable expression.

### visitWhileLoop

    public void visitWhileLoop(WhileStatement loop)