/** Conveniently create a class deriving from Code.testClass */ public Pair<SootClass, SignatureTable<Level>> makeDerivedClass( String name, SootClass superClass, List<MethodWithSignature<Level>> methods) { SootClass result = makeFreshClass(name); result.setSuperclass(superClass); SignatureTable<Level> newSignatures = this.signatures; for (MethodWithSignature<Level> m : methods) { result.addMethod(m.method); newSignatures = newSignatures.extendWith( m.method, Interop.asJavaStream(m.signature.constraints.stream()).collect(Collectors.toList()), m.signature.effects); } return Pair.of(result, newSignatures); }