src/main/java/com/github/fge/grappa/transform/load/ReflectiveClassLoader.java
public Class<?> loadClass(final String className, final byte[] bytecode)
    {
        Objects.requireNonNull(className);
        Objects.requireNonNull(bytecode);

        try {
            return (Class<?>) loadClass.invoke(loader, className, bytecode, 0,
                bytecode.length);
        } catch (InvocationTargetException | IllegalAccessException e) {
            throw new ParserTransformException("unable to load class by name",
                e);
        }
    }
public Class<?> loadClass(final String className, final byte[] bytecode)
    {
        Objects.requireNonNull(className);
        Objects.requireNonNull(bytecode);

        try {
            return (Class<?>) loadClass.invoke(loader, className, bytecode, 0,
                bytecode.length);
        } catch (InvocationTargetException | IllegalAccessException e) {
            throw new ParserTransformException("unable to load class by name",
                e);
        }
    }
Loads the class defined with the given name and bytecode using the given
class loader

<p>Since package and class idendity includes the ClassLoader instance
used to load a class, we use reflection on the given class loader to
define generated classes.</p>

<p>If we used our own class loader (in order to be able to access the
protected "defineClass" method), we would likely still be able to load
generated classes; however, they would not have access to package-private
classes and members of their super classes.</p>

@param className the full name of the class to be loaded
@param bytecode the bytecode of the class to load
@return the class instance