Represents a class in the AST.
A ClassNode should be created using the methods in ClassHelper. This ClassNode may be used to represent a class declaration or any other type. This class uses a proxy meschanism allowing to create a class for a plain name at ast creation time. In another phase of the compiler the real ClassNode for the plain name may be found. To avoid the need of exchanging this ClassNode with an instance of the correct ClassNode the correct ClassNode is set as redirect. Most method calls are then redirected to that ClassNode.
Note: the proxy mechanism is only allowed for classes being marked as primary ClassNode which means they represent no actual class. The redirect itself can be any type of ClassNode
To descirbe generic type signature see {@link #getGenericsTypes()} and{@link #setGenericsTypes(GenericsType[])}. These emthods are not proxied, they describe the type signature used at the point of declaration or the type signatures provided by the class. If the type signatures provided by the class are needed, then a call to {@link #redirect()} will help.
@see org.codehaus.groovy.ast.ClassHelper
@author
James Strachan
@author Jochen Theodorou
@version $Revision: 13567 $