A collection of utility methods used to deal with traits.
| Modifiers | Name | Description | 
|---|---|---|
| @interface | Traits.Implemented | Internal annotation used to indicate which methods in a trait interface have a default implementation. | 
| @interface | Traits.TraitBridge | Internal annotation used to indicate that a method is a bridge method to a trait default implementation. | 
| Modifiers | Name | Description | 
|---|---|---|
| static ClassNode | GENERATED_PROXY_CLASSNODE | |
| static ClassNode | IMPLEMENTED_CLASSNODE | |
| static ClassNode | SELFTYPE_CLASSNODE | |
| static String | STATIC_THIS_OBJECT | |
| static String | THIS_OBJECT | |
| static ClassNode | TRAITBRIDGE_CLASSNODE | |
| static Class<Trait> | TRAIT_CLASS | |
| static ClassNode | TRAIT_CLASSNODE | 
| Type Params | Return Type | Name and description | 
|---|---|---|
|  | static LinkedHashSet<ClassNode> | collectAllInterfacesReverseOrder(ClassNode cNode, LinkedHashSet<ClassNode> interfaces)Collects all interfaces of a class node, but reverses the order of the declaration of direct interfaces of this class node. | 
|  | static LinkedHashSet<ClassNode> | collectSelfTypes(ClassNode receiver, LinkedHashSet<ClassNode> selfTypes)Collects all the self types that a type should extend or implement, given the traits is implements. | 
|  | static LinkedHashSet<ClassNode> | collectSelfTypes(ClassNode receiver, LinkedHashSet<ClassNode> selfTypes, boolean checkInterfaces, boolean checkSuper)Collects all the self types that a type should extend or implement, given the traits is implements. | 
|  | static String[] | decomposeSuperCallName(String methodName)Returns the trait and method names derived from super-trait name scheme or nullif the method name doesn't correspond to a trait method. | 
|  | static ClassNode | findFieldHelper(ClassNode trait) | 
|  | static ClassNode | findHelper(ClassNode trait) | 
|  | static ClassNode | findStaticFieldHelper(ClassNode trait) | 
|  | static List<ClassNode> | findTraits(ClassNode cNode)Find all traits associated with the given classnode | 
| <T> | static T | getAsType(Object self, Class<T> clazz)Converts a class implementing some trait into a target class. | 
|  | static Method | getBridgeMethodTarget(Method someMethod)Reflection API to find the method corresponding to the default implementation of a trait, given a bridge method. | 
|  | static boolean | hasDefaultImplementation(MethodNode method)Indicates whether a method in a trait interface has a default implementation. | 
|  | static boolean | hasDefaultImplementation(Method method)Indicates whether a method in a trait interface has a default implementation. | 
|  | static boolean | isAnnotatedWithTrait(ClassNode cNode)Returns true if the specified class node is annotated with the Trait interface. | 
|  | static boolean | isBridgeMethod(Method someMethod)Reflection API to indicate whether some method is a bridge method to the default implementation of a trait. | 
|  | static boolean | isTrait(ClassNode cNode)Returns true if the specified class node is a trait. | 
|  | static boolean | isTrait(Class<?> clazz)Returns true if the specified class is a trait. | 
Collects all interfaces of a class node, but reverses the order of the declaration of direct interfaces of this class node. This is used to make sure a trait implementing A,B where both A and B have the same method will take the method from B (latest), aligning the behavior with categories.
cNode -  a class nodeinterfaces -  ordered set of interfacesCollects all the self types that a type should extend or implement, given the traits is implements. Collects from interfaces and superclasses too.
receiver -  a class node that may implement a traitselfTypes -  a collection where the list of self types will be writtenCollects all the self types that a type should extend or implement, given the traits is implements.
receiver -  a class node that may implement a traitselfTypes -  a collection where the list of self types will be writtencheckInterfaces -  should the interfaces that the node implements be collected toocheckSuper -  should we collect from the superclass too Returns the trait and method names derived from super-trait name scheme
 or null if the method name doesn't correspond to a trait method.
     
Find all traits associated with the given classnode
cNode -  the given classnodeConverts a class implementing some trait into a target class. If the trait is a dynamic proxy and that the target class is assignable to the target object of the proxy, then the target object is returned. Otherwise, falls back to DefaultGroovyMethods.asType
self -  an object to be coerced to some classclazz -  the class to be coerced toReflection API to find the method corresponding to the default implementation of a trait, given a bridge method.
someMethod -  a method nodeIndicates whether a method in a trait interface has a default implementation.
method -  a method nodeIndicates whether a method in a trait interface has a default implementation.
method -  a method nodeReturns true if the specified class node is annotated with the Trait interface.
cNode -  a class nodeReflection API to indicate whether some method is a bridge method to the default implementation of a trait.
someMethod -  a method nodeReturns true if the specified class node is a trait.
cNode -  a class node to testReturns true if the specified class is a trait.
clazz -  a class to test