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 null if 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