org.codehaus.groovy.ast.tools

## Class GeneralUtils

- java.lang.Object
- - org.codehaus.groovy.ast.tools.GeneralUtils

    public class GeneralUtils
    extends java.lang.Object

Handy methods when working with the Groovy AST

### Field Summary

Fields
`static Token` `AND`
`static Token` `ASSIGN`
`static Token` `CMP`
`static Token` `EQ`
`static Token` `LT`
`static Token` `NE`
`static Token` `OR`

### Constructor Summary

Constructors
Constructor and Description
`GeneralUtils()`

### Method Summary

All Methods Static Methods Concrete Methods Deprecated Methods
`static BinaryExpression` `andX(Expression lhv, Expression rhv)`
`static ArgumentListExpression` `args(Expression... expressions)`
`static ArgumentListExpression` `args(java.util.List<Expression> expressions)`
`static ArgumentListExpression` `args(Parameter[] parameters)`
`static ArgumentListExpression` `args(java.lang.String... names)`
`static Statement` `assignS(Expression target, Expression value)`
`static Expression` `assignX(Expression target, Expression value)`
`static Expression` `attrX(Expression oe, Expression prop)`
`static BinaryExpression` `binX(Expression left, Token token, Expression right)`
`static BlockStatement` `block(Statement... stmts)`
`static BlockStatement` `block(VariableScope varScope, java.util.List<Statement> stmts)`
`static BlockStatement` `block(VariableScope varScope, Statement... stmts)`
`static MethodCallExpression` `callSuperX(java.lang.String methodName)`
`static MethodCallExpression` `callSuperX(java.lang.String methodName, Expression args)`
`static MethodCallExpression` `callThisX(java.lang.String methodName)`
`static MethodCallExpression` `callThisX(java.lang.String methodName, Expression args)`
`static StaticMethodCallExpression` `callX(ClassNode receiver, java.lang.String methodName)`
`static StaticMethodCallExpression` `callX(ClassNode receiver, java.lang.String methodName, Expression args)`
`static MethodCallExpression` `callX(Expression receiver, Expression method, Expression args)`
`static MethodCallExpression` `callX(Expression receiver, java.lang.String methodName)`
`static MethodCallExpression` `callX(Expression receiver, java.lang.String methodName, Expression args)`
`static CastExpression` `castX(ClassNode type, Expression expression)`
`static CastExpression` `castX(ClassNode type, Expression expression, boolean ignoreAutoboxing)`
`static CatchStatement` `catchS(Parameter variable, Statement code)`
`static ClassExpression` `classX(java.lang.Class clazz)`
`static ClassExpression` `classX(ClassNode clazz)`
`static Parameter[]` `cloneParams(Parameter[] source)`
`static ClosureExpression` `closureX(Parameter[] params, Statement code)`
`static ClosureExpression` `closureX(Statement code)`
`static BinaryExpression` `cmpX(Expression lhv, Expression rhv)`
`static ConstantExpression` `constX(java.lang.Object val)`
`static ConstantExpression` `constX(java.lang.Object val, boolean keepPrimitive)`
`static void` `copyAnnotatedNodeAnnotations(AnnotatedNode annotatedNode, java.util.List<AnnotationNode> copied, java.util.List<AnnotationNode> notCopied)` Copies all `candidateAnnotations` with retention policy `RetentionPolicy.RUNTIME` and `RetentionPolicy.CLASS`.
`static Statement` `createConstructorStatementDefault(FieldNode fNode)`
`static Statement` `ctorSuperS()`
`static Statement` `ctorSuperS(Expression args)`
`static Statement` `ctorThisS()`
`static Statement` `ctorThisS(Expression args)`
`static ConstructorCallExpression` `ctorX(ClassNode type)`
`static ConstructorCallExpression` `ctorX(ClassNode type, Expression args)`
`static Statement` `declS(Expression target, Expression init)`
`static BooleanExpression` `equalsNullX(Expression argExpr)`
`static BinaryExpression` `eqX(Expression lhv, Expression rhv)`
`static FieldExpression` `fieldX(ClassNode owner, java.lang.String fieldName)`
`static FieldExpression` `fieldX(FieldNode fieldNode)`
`static Expression` `findArg(java.lang.String argName)`
`static java.util.List<MethodNode>` `getAllMethods(ClassNode type)`
`static java.util.List<PropertyNode>` `getAllProperties(ClassNode type)`
`static java.lang.String` `getGetterName(PropertyNode pNode)`
`static java.util.List<FieldNode>` `getInstanceNonPropertyFields(ClassNode cNode)`
`static java.util.List<PropertyNode>` `getInstanceProperties(ClassNode cNode)`
`static java.util.List<FieldNode>` `getInstancePropertyFields(ClassNode cNode)`
`static java.util.Set<ClassNode>` `getInterfacesAndSuperInterfaces(ClassNode type)`
`static java.util.List<FieldNode>` `getSuperNonPropertyFields(ClassNode cNode)`
`static java.util.List<FieldNode>` `getSuperPropertyFields(ClassNode cNode)`
`static Expression` `getterThisX(ClassNode annotatedNode, PropertyNode pNode)` This method is similar to `propX(Expression, Expression)` but will make sure that if the property being accessed is defined inside the classnode provided as a parameter, then a getter call is generated instead of a field access.
`static Expression` `getterX(ClassNode annotatedNode, Expression receiver, PropertyNode pNode)` This method is similar to `propX(Expression, Expression)` but will make sure that if the property being accessed is defined inside the classnode provided as a parameter, then a getter call is generated instead of a field access.
`static Expression` `getterX(ClassNode annotatedNode, PropertyNode pNode)` Deprecated. use getterThisX instead
`static BinaryExpression` `hasClassX(Expression instance, ClassNode cNode)`
`static boolean` `hasDeclaredMethod(ClassNode cNode, java.lang.String name, int argsCount)`
`static BinaryExpression` `hasEqualFieldX(FieldNode fNode, Expression other)`
`static BinaryExpression` `hasEqualPropertyX(PropertyNode pNode, Expression other)`
`static BooleanExpression` `hasSameFieldX(FieldNode fNode, Expression other)`
`static BooleanExpression` `hasSamePropertyX(PropertyNode pNode, Expression other)`
`static Statement` `ifElseS(Expression cond, Statement thenStmt, Statement elseStmt)`
`static Statement` `ifS(Expression cond, Expression trueExpr)`
`static Statement` `ifS(Expression cond, Statement trueStmt)`
`static Expression` `indexX(Expression target, Expression value)`
`static BooleanExpression` `isInstanceOfX(Expression objectExpression, ClassNode cNode)`
`static BooleanExpression` `isOneX(Expression expr)`
`static boolean` `isOrImplements(ClassNode type, ClassNode interfaceType)`
`static BooleanExpression` `isTrueX(Expression argExpr)`
`static BooleanExpression` `isZeroX(Expression expr)`
`static BinaryExpression` `ltX(Expression lhv, Expression rhv)`
`static java.lang.String` `makeDescriptorWithoutReturnType(MethodNode mn)`
`static BinaryExpression` `neX(Expression lhv, Expression rhv)`
`static BooleanExpression` `notNullX(Expression argExpr)`
`static NotExpression` `notX(Expression expr)`
`static BinaryExpression` `orX(Expression lhv, Expression rhv)`
`static Parameter` `param(ClassNode type, java.lang.String name)`
`static Parameter` `param(ClassNode type, java.lang.String name, Expression initialExpression)`
`static Parameter[]` `params(Parameter... params)`
`static BinaryExpression` `plusX(Expression lhv, Expression rhv)`
`static Expression` `propX(Expression owner, Expression property)`
`static Expression` `propX(Expression owner, java.lang.String property)`
`static Statement` `returnS(Expression expr)`
`static Statement` `safeExpression(Expression fieldExpr, Expression expression)`
`static BooleanExpression` `sameX(Expression self, Expression other)`
`static Statement` `stmt(Expression expr)`
`static TernaryExpression` `ternaryX(Expression cond, Expression trueExpr, Expression elseExpr)`
`static ThrowStatement` `throwS(Expression expr)`
`static VariableExpression` `varX(java.lang.String name)`
`static VariableExpression` `varX(java.lang.String name, ClassNode type)`
`static VariableExpression` `varX(Variable variable)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### ASSIGN

    public static final Token ASSIGN

#### EQ

    public static final Token EQ

#### NE

    public static final Token NE

#### LT

    public static final Token LT

#### AND

    public static final Token AND

#### OR

    public static final Token OR

#### CMP

    public static final Token CMP

### Constructor Detail

#### GeneralUtils

    public GeneralUtils()

### Method Detail

#### andX

    public static BinaryExpression andX(Expression lhv,
                                        Expression rhv)

#### args

    public static ArgumentListExpression args(Expression... expressions)

#### args

    public static ArgumentListExpression args(java.util.List<Expression> expressions)

#### args

    public static ArgumentListExpression args(Parameter[] parameters)

#### args

    public static ArgumentListExpression args(java.lang.String... names)

#### assignS

    public static Statement assignS(Expression target,
                                    Expression value)

#### assignX

    public static Expression assignX(Expression target,
                                     Expression value)

#### attrX

    public static Expression attrX(Expression oe,
                                   Expression prop)

#### binX

    public static BinaryExpression binX(Expression left,
                                        Token token,
                                        Expression right)

#### block

    public static BlockStatement block(VariableScope varScope,
                                       Statement... stmts)

#### block

    public static BlockStatement block(VariableScope varScope,
                                       java.util.List<Statement> stmts)

#### block

    public static BlockStatement block(Statement... stmts)

#### callSuperX

    public static MethodCallExpression callSuperX(java.lang.String methodName,
                                                  Expression args)

#### callSuperX

    public static MethodCallExpression callSuperX(java.lang.String methodName)

#### callThisX

    public static MethodCallExpression callThisX(java.lang.String methodName,
                                                 Expression args)

#### callThisX

    public static MethodCallExpression callThisX(java.lang.String methodName)

#### callX

    public static MethodCallExpression callX(Expression receiver,
                                             java.lang.String methodName,
                                             Expression args)

#### callX

    public static MethodCallExpression callX(Expression receiver,
                                             Expression method,
                                             Expression args)

#### callX

    public static MethodCallExpression callX(Expression receiver,
                                             java.lang.String methodName)

#### callX

    public static StaticMethodCallExpression callX(ClassNode receiver,
                                                   java.lang.String methodName,
                                                   Expression args)

#### callX

    public static StaticMethodCallExpression callX(ClassNode receiver,
                                                   java.lang.String methodName)

#### castX

    public static CastExpression castX(ClassNode type,
                                       Expression expression)

#### castX

    public static CastExpression castX(ClassNode type,
                                       Expression expression,
                                       boolean ignoreAutoboxing)

#### classX

    public static ClassExpression classX(ClassNode clazz)

#### classX

    public static ClassExpression classX(java.lang.Class clazz)

#### closureX

    public static ClosureExpression closureX(Parameter[] params,
                                             Statement code)

#### closureX

    public static ClosureExpression closureX(Statement code)

#### cloneParams

    public static Parameter[] cloneParams(Parameter[] source)

#### cmpX

    public static BinaryExpression cmpX(Expression lhv,
                                        Expression rhv)

#### constX

    public static ConstantExpression constX(java.lang.Object val)

#### constX

    public static ConstantExpression constX(java.lang.Object val,
                                            boolean keepPrimitive)

#### copyAnnotatedNodeAnnotations

    public static void copyAnnotatedNodeAnnotations(AnnotatedNode annotatedNode,
                                                    java.util.List<AnnotationNode> copied,
                                                    java.util.List<AnnotationNode> notCopied)

Copies all `candidateAnnotations` with retention policy `RetentionPolicy.RUNTIME` and `RetentionPolicy.CLASS`.

Annotations with `GeneratedClosure` members are not supported at present.

#### createConstructorStatementDefault

    public static Statement createConstructorStatementDefault(FieldNode fNode)

#### ctorX

    public static ConstructorCallExpression ctorX(ClassNode type,
                                                  Expression args)

#### ctorX

    public static ConstructorCallExpression ctorX(ClassNode type)

#### ctorSuperS

    public static Statement ctorSuperS(Expression args)

#### ctorThisS

    public static Statement ctorThisS(Expression args)

#### ctorSuperS

    public static Statement ctorSuperS()

#### ctorThisS

    public static Statement ctorThisS()

#### declS

    public static Statement declS(Expression target,
                                  Expression init)

#### eqX

    public static BinaryExpression eqX(Expression lhv,
                                       Expression rhv)

#### equalsNullX

    public static BooleanExpression equalsNullX(Expression argExpr)

#### fieldX

    public static FieldExpression fieldX(FieldNode fieldNode)

#### fieldX

    public static FieldExpression fieldX(ClassNode owner,
                                         java.lang.String fieldName)

#### findArg

    public static Expression findArg(java.lang.String argName)

#### getAllMethods

    public static java.util.List<MethodNode> getAllMethods(ClassNode type)

#### getAllProperties

    public static java.util.List<PropertyNode> getAllProperties(ClassNode type)

#### getGetterName

    public static java.lang.String getGetterName(PropertyNode pNode)

#### getInstanceNonPropertyFields

    public static java.util.List<FieldNode> getInstanceNonPropertyFields(ClassNode cNode)

#### getInstanceProperties

    public static java.util.List<PropertyNode> getInstanceProperties(ClassNode cNode)

#### getInstancePropertyFields

    public static java.util.List<FieldNode> getInstancePropertyFields(ClassNode cNode)

#### getInterfacesAndSuperInterfaces

    public static java.util.Set<ClassNode> getInterfacesAndSuperInterfaces(ClassNode type)

#### getSuperNonPropertyFields

    public static java.util.List<FieldNode> getSuperNonPropertyFields(ClassNode cNode)

#### getSuperPropertyFields

    public static java.util.List<FieldNode> getSuperPropertyFields(ClassNode cNode)

#### hasClassX

    public static BinaryExpression hasClassX(Expression instance,
                                             ClassNode cNode)

#### hasDeclaredMethod

    public static boolean hasDeclaredMethod(ClassNode cNode,
                                            java.lang.String name,
                                            int argsCount)

#### hasEqualFieldX

    public static BinaryExpression hasEqualFieldX(FieldNode fNode,
                                                  Expression other)

#### hasEqualPropertyX

    public static BinaryExpression hasEqualPropertyX(PropertyNode pNode,
                                                     Expression other)

#### hasSameFieldX

    public static BooleanExpression hasSameFieldX(FieldNode fNode,
                                                  Expression other)

#### hasSamePropertyX

    public static BooleanExpression hasSamePropertyX(PropertyNode pNode,
                                                     Expression other)

#### ifElseS

    public static Statement ifElseS(Expression cond,
                                    Statement thenStmt,
                                    Statement elseStmt)

#### ifS

    public static Statement ifS(Expression cond,
                                Expression trueExpr)

#### ifS

    public static Statement ifS(Expression cond,
                                Statement trueStmt)

#### indexX

    public static Expression indexX(Expression target,
                                    Expression value)

#### isInstanceOfX

    public static BooleanExpression isInstanceOfX(Expression objectExpression,
                                                  ClassNode cNode)

#### isOneX

    public static BooleanExpression isOneX(Expression expr)

#### isOrImplements

    public static boolean isOrImplements(ClassNode type,
                                         ClassNode interfaceType)

#### isTrueX

    public static BooleanExpression isTrueX(Expression argExpr)

#### isZeroX

    public static BooleanExpression isZeroX(Expression expr)

#### ltX

    public static BinaryExpression ltX(Expression lhv,
                                       Expression rhv)

#### makeDescriptorWithoutReturnType

    public static java.lang.String makeDescriptorWithoutReturnType(MethodNode mn)

#### neX

    public static BinaryExpression neX(Expression lhv,
                                       Expression rhv)

#### notNullX

    public static BooleanExpression notNullX(Expression argExpr)

#### notX

    public static NotExpression notX(Expression expr)

#### orX

    public static BinaryExpression orX(Expression lhv,
                                       Expression rhv)

#### param

    public static Parameter param(ClassNode type,
                                  java.lang.String name)

#### param

    public static Parameter param(ClassNode type,
                                  java.lang.String name,
                                  Expression initialExpression)

#### params

    public static Parameter[] params(Parameter... params)

#### plusX

    public static BinaryExpression plusX(Expression lhv,
                                         Expression rhv)

#### propX

    public static Expression propX(Expression owner,
                                   java.lang.String property)

#### propX

    public static Expression propX(Expression owner,
                                   Expression property)

#### returnS

    public static Statement returnS(Expression expr)

#### safeExpression

    public static Statement safeExpression(Expression fieldExpr,
                                           Expression expression)

#### sameX

    public static BooleanExpression sameX(Expression self,
                                          Expression other)

#### stmt

    public static Statement stmt(Expression expr)

#### ternaryX

    public static TernaryExpression ternaryX(Expression cond,
                                             Expression trueExpr,
                                             Expression elseExpr)

#### varX

    public static VariableExpression varX(java.lang.String name)

#### varX

    public static VariableExpression varX(Variable variable)

#### varX

    public static VariableExpression varX(java.lang.String name,
                                          ClassNode type)

#### throwS

    public static ThrowStatement throwS(Expression expr)

#### catchS

    public static CatchStatement catchS(Parameter variable,
                                        Statement code)

#### getterX

    @Deprecated
    public static Expression getterX(ClassNode annotatedNode,
                                                  PropertyNode pNode)

Deprecated. use getterThisX instead

#### getterThisX

    public static Expression getterThisX(ClassNode annotatedNode,
                                         PropertyNode pNode)

This method is similar to `propX(Expression, Expression)` but will make sure that if the property being accessed is defined inside the classnode provided as a parameter, then a getter call is generated instead of a field access.

Parameters:
  `annotatedNode` - the class node where the property node is accessed from
  `pNode` - the property being accessed
Returns:
  a method call expression or a property expression

#### getterX

    public static Expression getterX(ClassNode annotatedNode,
                                     Expression receiver,
                                     PropertyNode pNode)

This method is similar to `propX(Expression, Expression)` but will make sure that if the property being accessed is defined inside the classnode provided as a parameter, then a getter call is generated instead of a field access.

Parameters:
  `annotatedNode` - the class node where the property node is accessed from
  `receiver` - the object having the property
  `pNode` - the property being accessed
Returns:
  a method call expression or a property expression