code: protected Optional<ExpressionEvaluator.EvaluationResult> computeAndEvaluateNewCondition(
              ImmutableSubstitution<? extends ImmutableTerm> substitution,
              Optional<ImmutableExpression> optionalNewEqualities) {
  
          Optional<ImmutableExpression> updatedExistingCondition = getOptionalFilterCondition()
                  .map(substitution::applyToBooleanExpression);
  
          Optional<ImmutableExpression> newCondition = immutabilityTools.foldBooleanExpressions(
                  Stream.concat(
                      Stream.of(updatedExistingCondition),
                      Stream.of(optionalNewEqualities))
                      .filter(Optional::isPresent)
                      .map(Optional::get)
                      .flatMap(e -> e.flattenAND().stream()));
  
          return newCondition
                  .map(cond -> createExpressionEvaluator()
                          .evaluateExpression(cond));
      }
docs: TODO: explain