Source:
private void buildCall(Tree element, UCFGBuilder.BlockBuilder blockBuilder, IdentifierGenerator idGenerator) { if (isObjectVarDeclaration(element)) { VariableTree variableTree = (VariableTree) element; String lhs = idGenerator.lookupIdFor(variableTree.simpleName()); if (!idGenerator.isConst(lhs)) { Expression source = idGenerator.lookupExpressionFor(variableTree.initializer()); blockBuilder.assignTo(variableWithId(lhs), UCFGBuilder.call("__id").withArgs(source), location(element)); } return; } if (element.is(METHOD_INVOCATION)) { MethodInvocationTree methodInvocationTree = (MethodInvocationTree) element; buildMethodInvocation(blockBuilder, idGenerator, methodInvocationTree); } else if (element.is(NEW_CLASS)) { NewClassTree newClassTree = (NewClassTree) element; buildConstructorInvocation(blockBuilder, idGenerator, newClassTree); } else if (element.is(NEW_ARRAY)) { NewArrayTree newArrayTree = (NewArrayTree) element; buildNewArrayInvocation(blockBuilder, idGenerator, newArrayTree); } else if (element.is(PLUS)) { BinaryExpressionTree binaryExpressionTree = (BinaryExpressionTree) element; buildConcatenationInvocation(blockBuilder, idGenerator, binaryExpressionTree); } else if (element.is(ASSIGNMENT)) { AssignmentExpressionTree assignmentExpressionTree = (AssignmentExpressionTree) element; buildAssignmentInvocation(blockBuilder, idGenerator, assignmentExpressionTree); } else if (element.is(PLUS_ASSIGNMENT)) { AssignmentExpressionTree assignmentExpressionTree = (AssignmentExpressionTree) element; buildPlusAssignmentInvocation(blockBuilder, idGenerator, assignmentExpressionTree); } else if (element.is(ARRAY_ACCESS_EXPRESSION) && !element.parent().is(PLUS_ASSIGNMENT, ASSIGNMENT)) { ArrayAccessExpressionTree arrayAccessExpressionTree = (ArrayAccessExpressionTree) element; if (isObject(arrayAccessExpressionTree.symbolType())) { Expression.Variable getValue = variableWithId(idGenerator.newId()); Expression array = idGenerator.lookupExpressionFor((arrayAccessExpressionTree).expression()); blockBuilder.assignTo(getValue, arrayGet(array), location(element)); idGenerator.varForExpression(element, getValue.id()); } } }

Target:
private void buildCall(Tree element, UCFGBuilder.BlockBuilder blockBuilder, IdentifierGenerator idGenerator) { if (isObjectVarDeclaration(element)) { VariableTree variableTree = (VariableTree) element; String lhs = idGenerator.lookupIdFor(variableTree.simpleName()); if (!idGenerator.isConst(lhs)) { Expression source = idGenerator.lookupExpressionFor(variableTree.initializer()); blockBuilder.assignTo(variableWithId(lhs), UCFGBuilder.call("__id").withArgs(source), location(element)); } return; } if (element.is(METHOD_INVOCATION)) { MethodInvocationTree methodInvocationTree = (MethodInvocationTree) element; buildMethodInvocation(blockBuilder, idGenerator, methodInvocationTree); } else if (element.is(NEW_CLASS)) { NewClassTree newClassTree = (NewClassTree) element; buildConstructorInvocation(blockBuilder, idGenerator, newClassTree); } else if (element.is(NEW_ARRAY)) { NewArrayTree newArrayTree = (NewArrayTree) element; buildNewArrayInvocation(blockBuilder, idGenerator, newArrayTree); } else if (element.is(PLUS)) { BinaryExpressionTree binaryExpressionTree = (BinaryExpressionTree) element; buildConcatenationInvocation(blockBuilder, idGenerator, binaryExpressionTree); } else if (element.is(ASSIGNMENT)) { AssignmentExpressionTree assignmentExpressionTree = (AssignmentExpressionTree) element; buildAssignmentInvocation(blockBuilder, idGenerator, assignmentExpressionTree); } else if (element.is(PLUS_ASSIGNMENT)) { AssignmentExpressionTree assignmentExpressionTree = (AssignmentExpressionTree) element; buildPlusAssignmentInvocation(blockBuilder, idGenerator, assignmentExpressionTree); } else if (element.is(ARRAY_ACCESS_EXPRESSION) && !element.parent().is(PLUS_ASSIGNMENT, ASSIGNMENT)) { ArrayAccessExpressionTree arrayAccessExpressionTree = (ArrayAccessExpressionTree) element; if (isObject(arrayAccessExpressionTree.symbolType())) { Expression.Variable getValue = variableWithId(idGenerator.newId()); Expression array = idGenerator.lookupExpressionFor(arrayAccessExpressionTree.expression()); blockBuilder.assignTo(getValue, arrayGet(array), location(element)); idGenerator.varForExpression(element, getValue.id()); } } }