/**
   * Visits the class.
   *
   * @param access
   * @param name
   * @param signature
   * @param superName
   * @param interfaces
   */
  public void visit(
      final int version,
      final int access,
      final String name,
      final String signature,
      final String superName,
      final String[] interfaces) {
    ExpressionContext ctx = new ExpressionContext(PointcutType.WITHIN, m_classInfo, m_classInfo);
    if (!classFilter(m_classInfo, ctx, m_ctx.getDefinitions())) {
      m_declaringTypeName = name;
      m_mixinFields = new HashMap();

      // populate with fields already present for mixins from previous weaving
      for (int i = 0; i < m_classInfo.getFields().length; i++) {
        FieldInfo fieldInfo = m_classInfo.getFields()[i];
        if (fieldInfo.getName().startsWith(MIXIN_FIELD_NAME)) {
          m_mixinFields.put(fieldInfo.getType(), fieldInfo);
        }
      }

      // add fields and method for (not already there) mixins
      addMixinMembers();
    }
    super.visit(version, access, name, signature, superName, interfaces);
  }
 @Override
 public void visit(
     final int version,
     final int access,
     final String name,
     final String signature,
     final String superName,
     final String[] interfaces) {
   Set<String> interfacesSet = new LinkedHashSet<String>();
   if (interfaces != null) Collections.addAll(interfacesSet, interfaces);
   for (Class extraInterface : classList) {
     if (extraInterface.isInterface())
       interfacesSet.add(BytecodeHelper.getClassInternalName(extraInterface));
   }
   final boolean addGroovyObjectSupport = !GroovyObject.class.isAssignableFrom(superClass);
   if (addGroovyObjectSupport) interfacesSet.add("groovy/lang/GroovyObject");
   super.visit(
       V1_5,
       ACC_PUBLIC,
       proxyName,
       signature,
       BytecodeHelper.getClassInternalName(superClass),
       interfacesSet.toArray(new String[interfacesSet.size()]));
   addDelegateFields();
   if (addGroovyObjectSupport) {
     createGroovyObjectSupport();
   }
   for (Class clazz : classList) {
     visitClass(clazz);
   }
 }
 public void visit(
     final int version,
     final int access,
     final String name,
     final String signature,
     final String superName,
     final String[] interfaces) {
   this.cname = name;
   super.visit(version, access, name, signature, superName, interfaces);
 }
 @Override
 public void visit(
     int version,
     int access,
     String name,
     String signature,
     String superName,
     String[] interfaces) {
   className = name;
   super.visit(version, access, name, signature, superName, interfaces);
 }
 public void visit(
     int version,
     int access,
     String name,
     String signature,
     String superName,
     String[] interfaces) {
   super.visit(version, access, name, signature, superName, interfaces);
   myClassName = name;
   mySuperName = superName;
 }