public Parser(ClassUnit theFileUnit) { fileUnit= theFileUnit; fileUnit.annotations= null; AttributeReader r= new AnnotationReader(fileUnit); Attribute.addAttributeReader("RuntimeVisibleAnnotations", r); try { InputStream openInputStream= fileUnit.getClassFile().openInputStream(); String filename= fileUnit.getName(); byte[] originalByteArray= IOUtils.toByteArray(openInputStream); byte[] transformedArray= originalByteArray; transformedArray= lambdaUsageBackporter.transform(filename, transformedArray); if (DragomeJsCompiler.compiler.bytecodeTransformer != null) if (DragomeJsCompiler.compiler.bytecodeTransformer.requiresTransformation(filename)) transformedArray= DragomeJsCompiler.compiler.bytecodeTransformer.transform(filename, transformedArray); fileUnit.setBytecodeArrayI(transformedArray); ClassParser cp= new ClassParser(new ByteArrayInputStream(transformedArray), filename); jc= cp.parse(); } catch (IOException e) { throw new RuntimeException(e); } } public TypeDeclaration parse()