cglib/src/main/java/net/sf/cglib/proxy/Enhancer.java
public void setSuperclass(Class superclass) {
        if (superclass != null && superclass.isInterface()) {
            setInterfaces(new Class[]{ superclass });
        } else if (superclass != null && superclass.equals(Object.class)) {
            // affects choice of ClassLoader
            this.superclass = null;
        } else {
            this.superclass = superclass;
        }
    }
public void setSuperclass(Class superclass) {
        if (superclass != null && superclass.isInterface()) {
            setInterfaces(new Class[]{ superclass });
        } else if (superclass != null && superclass.equals(Object.class)) {
            // affects choice of ClassLoader
            this.superclass = null;
        } else {
            this.superclass = superclass;
        }
    }
Set the class which the generated class will extend. As a convenience,
if the supplied superclass is actually an interface, <code>setInterfaces</code>
will be called with the appropriate argument instead.
A non-interface argument must not be declared as final, and must have an
accessible constructor.
@param superclass class to extend or interface to implement
@see #setInterfaces(Class[])