if (sig.getName().equals(Constants.STATIC_NAME)) {
if (sig.getName().equals(Constants.CONSTRUCTOR_NAME)) {
    protected Emitter getEmitter(ClassVisitor cv) {        return new Emitter(cv) {            public void begin_class(int access, String className, Type superType, Type[] interfaces, String sourceFile) {                Type[] all = TypeUtils.add(interfaces, TypeUtils.getTypes(delegateIf));                super.begin_class(access, className, superType, all, sourceFile);                declare_field(Constants.ACC_PRIVATE | Constants.ACC_TRANSIENT,                              DELEGATE,                              delegateType,                              null);                for (int i = 0; i < delegateIf.length; i++) {                    Method[] methods = delegateIf[i].getMethods();                    for (int j = 0; j < methods.length; j++) {                        if (Modifier.isAbstract(methods[j].getModifiers())) {                            addDelegate(methods[j]);                        }                    }                }            }            public CodeVisitor begin_method(int access, Signature sig, Type[] exceptions) {                CodeVisitor v = super.begin_method(access, sig, exceptions);                if (sig.getName().equals(Constants.STATIC_NAME)) {                    return new CodeAdapter(v) {                        private boolean transformInit = true;                        public void visitMethodInsn(int opcode, String owner, String name, String desc) {                            super.visitMethodInsn(opcode, owner, name, desc);                            if (transformInit && opcode == Constants.INVOKESPECIAL) {                                load_this();                                new_instance(delegateType);                                dup();                                load_this();                                invoke_constructor(delegateType, CSTRUCT_OBJECT);                                putfield(DELEGATE);                                transformInit = false;                            }                        }                    };                }                return v;            }            private void addDelegate(Method m) {                Method delegate;                try {                    delegate = delegateImpl.getMethod(m.getName(), m.getParameterTypes());                    if (!delegate.getReturnType().getName().equals(m.getReturnType().getName())){                        throw new IllegalArgumentException("Invalid delegate signature " + delegate);                    }                } catch (NoSuchMethodException e) {                    throw new CodeGenerationException(e);                }                Signature sig = ReflectUtils.getSignature(m);                begin_method(Constants.ACC_PUBLIC, sig, TypeUtils.getTypes(m.getExceptionTypes()));                load_this();                getfield(DELEGATE);                load_args();                invoke_virtual(delegateType, sig);                return_value();            }        };    }