isVisible(construct, clazz.getPackage().getName()))) {
isVisible( construct, clazz.getPackage() ))) {
    /* package */ EnhancerGenerator(String className, Class clazz, Class[] interfaces, MethodInterceptor ih,                                    ClassLoader loader, Method wreplace, boolean delegating) {        super(className, clazz, loader);        this.interfaces = interfaces;        this.ih = ih;        this.wreplace = wreplace;        this.delegating = delegating;        if (wreplace != null &&             (!Modifier.isStatic(wreplace.getModifiers()) ||             !Modifier.isPublic(wreplace.getModifiers()) ||             wreplace.getReturnType() != Object.class ||              wreplace.getParameterTypes().length != 1 ||             wreplace.getParameterTypes()[0] != Object.class)) {            throw new IllegalArgumentException(wreplace.toString());        }        try {            Constructor construct = clazz.getDeclaredConstructor( new Class[0] );            int mod = construct.getModifiers();                            if (!(Modifier.isPublic(mod) ||                  Modifier.isProtected(mod) ||                  isVisible(construct, clazz.getPackage().getName()))) {                throw new IllegalArgumentException( clazz.getName() );            }            if (wreplace != null) {                loader.loadClass(wreplace.getDeclaringClass().getName());            }            loader.loadClass(clazz.getName());            if (interfaces != null) {                for (int i = 0; i < interfaces.length; i++) {                    if (!interfaces[i].isInterface()) {                        throw new IllegalArgumentException(interfaces[i] + " is not an interface");                    }                    loader.loadClass(interfaces[i].getName());                }            }        } catch (NoSuchMethodException e) {            throw new CodeGenerationException(e);        } catch (ClassNotFoundException e) {            throw new CodeGenerationException(e);        }    }