private List<StandardMethodContract> visitLogicalOperation(List<LighterASTNode> operands, boolean conjunction, List<ValueConstraint[]> states) {
    BooleanReturnValue breakValue = returnBoolean(!conjunction);
    List<StandardMethodContract> finalStates = new ArrayList<>();
    for (LighterASTNode operand : operands) {
      List<PreContract> opResults = visitExpression(states, operand);
      finalStates.addAll(ContainerUtil.filter(knownContracts(opResults), contract -> contract.getReturnValue() == breakValue));
      states = antecedentsReturning(opResults, breakValue.negate());
    }
    finalStates.addAll(toContracts(states, breakValue.negate()));
    return finalStates;
  }
private List<StandardMethodContract> visitLogicalOperation(List<LighterASTNode> operands, boolean conjunction, List<ValueConstraint[]> states)