"
is escaped, so until another "
appears everything will be seen as a string.
This is indeed wrong. When passing a String argument to a MethodDescriptor you have to pass it in JVM notation.
MethodDescriptor("([Ljava/lang/String;)V")
However, I would not recommend doing this because it's rather error-prone. You should use the other apply methods MethodDescriptor offers. Here are two examples:
MethodDescriptor(ArrayType(ObjectType.String), VoidType) // first parameter represents the parameter list, the second the return type
MethodDescriptor(RefArray(LongType,ByteType,ObjectType.String), BooleanType) // a method with (long, byte, String): boolean
libraryClassFilesAreInterfacesOnly
actually doesn’t change how the classes are loaded - it basically reflects how the classes are expected to be loaded. That is, it might be possible that the “discarding" loader was used but libraryClassFilesAreInterfacesOnly is still false.