Buggy code:
public class ClassStmtCompiler extends StmtCompiler < ClassEntity > { protected JPHPClassWriter cw ; public final ClassNode node ; public final ClassStmtToken statement ; public final List < TraceInfo > traceList = new ArrayList < TraceInfo > ( ) ; public final List < Memory > memoryConstants = new ArrayList < Memory > ( ) ; public final List < Collection < Memory > > memoryArrayConstants = new ArrayList < Collection < Memory > > ( ) ; private boolean external = false ; private boolean isSystem = false ; private boolean isInterfaceCheck = true ; private String functionName = "" ; private boolean initDynamicExists = false ; private int callFuncCount = 0 ; private int callMethCount = 0 ; private GeneratorEntity generatorEntity ; protected List < ConstStmtToken . Item > dynamicConstants = new ArrayList < ConstStmtToken . Item > ( ) ; protected List < ClassVarStmtToken > dynamicProperties = new ArrayList < ClassVarStmtToken > ( ) ; public ClassStmtCompiler ( JvmCompiler compiler , ClassStmtToken statement ) { } public int getAndIncCallFuncCount ( ) { } public int getAndIncCallMethCount ( ) { } public boolean isInitDynamicExists ( ) { } public boolean isClosure ( ) { } public String getFunctionName ( ) { } public void setFunctionName ( String functionName ) { } public GeneratorEntity getGeneratorEntity ( ) { } public void setGeneratorEntity ( GeneratorEntity generatorEntity ) { } public boolean isSystem ( ) { } public void setSystem ( boolean system ) { } public void setInterfaceCheck ( boolean check ) { } public boolean isExternal ( ) { } public void setExternal ( boolean external ) { } int addTraceInfo ( int line , int position ) { } int addTraceInfo ( Token token ) { } int addMemoryConstant ( Memory memory ) { } int addMemoryArray ( Collection < Memory > memories ) { } @ SuppressWarnings ( "unchecked" ) protected void writeDestructor ( ) { } protected void writeDefaultConstructors ( ) { } @ SuppressWarnings ( "unchecked" ) protected void writeConstructor ( ) { } protected void writeConstant ( ConstStmtToken constant ) { } @ SuppressWarnings ( "unchecked" ) protected void writeSystemInfo ( ) { node . fields . add ( new FieldNode ( ( ( ( ACC_PROTECTED ) + ( ACC_FINAL ) ) + ( ACC_STATIC ) ) , "$FN" , Type . getDescriptor ( String . class ) , null , compiler . getSourceFile ( ) ) ) ; <START_BUG> node . fields . add ( new FieldNode ( ( ( ACC_PROTECTED ) + ( ACC_STATIC ) ) , "$TRC" , Type . getDescriptor ( TraceInfo [ ] . class ) , null , null ) ) ; <END_BUG> node . fields . add ( new FieldNode ( ( ( ACC_PROTECTED ) + ( ACC_STATIC ) ) , "$MEM" , Type . getDescriptor ( Memory [ ] . class ) , null , null ) ) ; node . fields . add ( new FieldNode ( ( ( ACC_PROTECTED ) + ( ACC_STATIC ) ) , "$AMEM" , Type . getDescriptor ( Memory [ ] [ ] . class ) , null , null ) ) ; node . fields . add ( new FieldNode ( ( ( ACC_PROTECTED ) + ( ACC_STATIC ) ) , "$CALL_FUNC_CACHE" , Type . getDescriptor ( FunctionCallCache . class ) , null , null ) ) ; node . fields . add ( new FieldNode ( ( ( ACC_PROTECTED ) + ( ACC_STATIC ) ) , "$CALL_METH_CACHE" , Type . getDescriptor ( MethodCallCache . class ) , null , null ) ) ; if ( ( functionName ) != null ) { node . fields . add ( new FieldNode ( ( ( ( ACC_PUBLIC ) + ( ACC_FINAL ) ) + ( ACC_STATIC ) ) , "$CL" , Type . getDescriptor ( String . class ) , null , ( ! ( functionName . isEmpty ( ) ) ? functionName : entity . getName ( ) ) ) ) ; } } @ SuppressWarnings ( "unchecked" ) protected void writeInitEnvironment ( ) { } @ SuppressWarnings ( "unchecked" ) protected void writeInitStatic ( ) { } protected void writeInterfaceMethod ( MethodEntity method ) { } protected void writeInterfaceMethods ( Collection < MethodEntity > methods ) { } protected Set < ClassEntity > writeInterfaces ( ClassEntity _interface ) { } protected void writeInterfaces ( ClassEntity _interface , Set < ClassEntity > used ) { } protected ClassEntity fetchClass ( String name ) { } protected ClassEntity fetchClassAndCheck ( String name ) { } @ SuppressWarnings ( "unchecked" ) protected void writeImplements ( ) { } protected void writeCopiedMethod ( ClassStmtToken . Alias alias , String methodName , ClassEntity trait ) { } protected void writeCopiedMethod ( MethodEntity methodEntity , ClassEntity trait ) { } protected void writeTraitProperties ( ClassEntity trait , Collection < PropertyEntity > props ) { } protected void writeTraitProperties ( ClassEntity trait ) { } protected void writeTrait ( ClassEntity trait ) { } protected void checkRequiredTrait ( String trait ) { } protected void checkAliasAndReplacementsTraits ( ) { } protected List < ClassEntity > fetchTraits ( ) { } protected void writeTraits ( Collection < ClassEntity > traits ) { } @ Override public ClassEntity compile ( ) { } }

Fix:
node . fields . add ( new FieldNode ( ( ( ACC_PUBLIC ) + ( ACC_STATIC ) ) , "$TRC" , Type . getDescriptor ( TraceInfo [ ] . class ) , null , null ) ) ;