Source:
private void execute(BlockExecution blockExecution) { CfgBlock block = blockExecution.block(); ProgramState currentState = blockExecution.state(); boolean stopExploring = false; for (Tree element : block.elements()) { beforeBlockElement(currentState, element); if (element.is(Kind.ASSIGNMENT)) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) element; currentState = store(currentState, assignment.variable(), assignment.expression()); } else if (TreeKinds.isAssignment(element)) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) element; currentState = store(currentState, assignment.variable(), SymbolicValue.UNKNOWN); } else if (element.is( Kind.POSTFIX_DECREMENT, Kind.POSTFIX_INCREMENT, Kind.PREFIX_DECREMENT, Kind.PREFIX_INCREMENT)) { UnaryExpressionTree unary = (UnaryExpressionTree) element; currentState = store(currentState, unary.expression(), SymbolicValue.UNKNOWN); } else if (element.is(Kind.INITIALIZED_BINDING_ELEMENT)) { InitializedBindingElementTree initialized = (InitializedBindingElementTree) element; currentState = store(currentState, initialized.left(), initialized.right()); } else if (element.is(Kind.BRACKET_MEMBER_EXPRESSION, Kind.DOT_MEMBER_EXPRESSION)) { ExpressionTree object = ((MemberExpressionTree) element).object(); if (object.is(Kind.IDENTIFIER_REFERENCE)) { Symbol symbol = ((IdentifierTree) object).symbol(); if (symbol != null) { SymbolicValue symbolicValue = currentState.get(symbol); if (symbolicValue != null && symbolicValue.nullability().equals(Nullability.UNKNOWN)) { currentState = currentState.constrain(symbol, Nullability.NOT_NULLY); } else if (symbolicValue != null && symbolicValue.nullability().isNullOrUndefined().equals(State.YES)) { stopExploring = true; break; } } } } afterBlockElement(currentState, element); } if (!stopExploring) { handleSuccessors(block, currentState); } }

Target:
private void execute(BlockExecution blockExecution) { CfgBlock block = blockExecution.block(); ProgramState currentState = blockExecution.state(); boolean stopExploring = false; for (Tree element : block.elements()) { beforeBlockElement(currentState, element); if (element.is(Kind.ASSIGNMENT)) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) element; currentState = store(currentState, assignment.variable(), assignment.expression()); } else if (TreeKinds.isAssignment(element)) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) element; currentState = store(currentState, assignment.variable(), SymbolicValue.UNKNOWN); } else if (element.is( Kind.POSTFIX_DECREMENT, Kind.POSTFIX_INCREMENT, Kind.PREFIX_DECREMENT, Kind.PREFIX_INCREMENT)) { UnaryExpressionTree unary = (UnaryExpressionTree) element; currentState = store(currentState, unary.expression(), SymbolicValue.UNKNOWN); } else if (element.is(Kind.INITIALIZED_BINDING_ELEMENT)) { InitializedBindingElementTree initialized = (InitializedBindingElementTree) element; currentState = store(currentState, initialized.left(), initialized.right()); } else if (element.is(Kind.BRACKET_MEMBER_EXPRESSION, Kind.DOT_MEMBER_EXPRESSION)) { ExpressionTree object = ((MemberExpressionTree) element).object(); if (object.is(Kind.IDENTIFIER_REFERENCE)) { Symbol symbol = ((IdentifierTree) object).symbol(); if (symbol != null) { SymbolicValue symbolicValue = currentState.get(symbol); if (symbolicValue != null && symbolicValue.nullability().equals(Nullability.UNKNOWN)) { currentState = currentState.constrain(symbol, Nullability.NOT_NULLY); } else if (symbolicValue != null && symbolicValue.nullability().isNullOrUndefined()) { stopExploring = true; break; } } } } afterBlockElement(currentState, element); } if (!stopExploring) { handleSuccessors(block, currentState); } }