in modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java [225:252]
void verify(final String className, final byte[] bytecode) {
final ClassReader reader = new ClassReader(bytecode);
env.debug("Verifying bytecode for class %s", className);
final StringWriter w = new StringWriter(); //NOPMD
CheckClassAdapter.verify(reader, env.classLoader, false, new PrintWriter(w));
final String error = w.toString();
if (!error.isEmpty()) {
env.error(error);
final StringWriter trace = new StringWriter();
reader.accept(new TraceClassVisitor(new PrintWriter(trace)), ClassReader.SKIP_DEBUG);
env.debug(trace.toString());
throw new IllegalStateException();
}
Validate.validState(StringUtils.isBlank(error), error);
final ClassVisitor checkInnerClasses = new ClassVisitor(ASM_VERSION, null) {
final Set<String> innerNames = new HashSet<>();
@Override
public void visitInnerClass(final String name, final String outerName, final String innerName,
final int access) {
super.visitInnerClass(name, outerName, innerName, access);
Validate.validState(innerNames.add(innerName), "%s already defined", innerName);
}
};
reader.accept(checkInnerClasses, ClassReader.SKIP_CODE);
}