Buggy code:
public class LirTranslator implements PropagatingVisitor < List < String > , List < String > > { public static final String VAL_OPTMZ = "" ; private String currentClass ; private Label currentWhileLabel ; private Label currentEndWhileLabel ; @ Override public List < String > visit ( Program program , List < String > target ) throws Exception { } @ Override public List < String > visit ( ICClass icClass , List < String > target ) throws Exception { } @ Override public List < String > visit ( Field field , List < String > target ) throws Exception { } @ Override public List < String > visit ( VirtualMethod method , List < String > target ) throws Exception { } @ Override public List < String > visit ( StaticMethod method , List < String > target ) throws Exception { } @ Override public List < String > visit ( LibraryMethod method , List < String > target ) throws Exception { } @ Override public List < String > visit ( Formal formal , List < String > target ) throws Exception { } @ Override public List < String > visit ( PrimitiveType type , List < String > target ) throws Exception { } @ Override public List < String > visit ( UserType type , List < String > target ) throws Exception { } @ Override public List < String > visit ( Assignment assignment , List < String > target ) throws Exception { } @ Override public List < String > visit ( CallStatement callStatement , List < String > targetRegisters ) throws Exception { List < String > callStatementBlock = new LinkedList < String > ( ) ; Call call = callStatement . getCall ( ) ; <START_BUG> List < String > callStatementTR = call . accept ( this , null ) ; <END_BUG> callStatementBlock . addAll ( callStatementTR ) ; return callStatementBlock ; } @ Override public List < String > visit ( Return returnStatement , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( If ifStatement , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( While whileStatement , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( Break breakStatement , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( Continue continueStatement , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( StatementsBlock statementsBlock , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( LocalVariable localVariable , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( VariableLocation location , List < String > target ) throws Exception { } @ Override public List < String > visit ( ArrayLocation location , List < String > target ) throws Exception { } @ Override public List < String > visit ( StaticCall call , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( VirtualCall call , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( This thisExpression , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( NewClass newClass , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( NewArray newArray , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( Length length , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( MathBinaryOp binaryOp , List < String > target ) throws Exception { } @ Override public List < String > visit ( LogicalBinaryOp binaryOp , List < String > target ) throws Exception { } @ Override public List < String > visit ( MathUnaryOp unaryOp , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( LogicalUnaryOp unaryOp , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( Literal literal , List < String > targetRegisters ) throws Exception { } @ Override public List < String > visit ( ExpressionBlock expressionBlock , List < String > targetRegisters ) throws Exception { } }

Fix:
List < String > callStatementTR = call . accept ( this , new LinkedList < String > ( ) ) ;