Program: 61417
Project: 61417
Buggy source:
private List<Expression> newCombiner(final List<Expression> toCombine,final List<Operator> operators,final Object angelicValue){
  final List<Expression> result=new ArrayList<>();
  if (nopolContext.isSortExpressions()) {
    Collections.sort(toCombine,Collections.reverseOrder());
  }
  for (  Operator operator : operators) {
    if (angelicValue != null && !operator.getReturnType().isAssignableFrom(angelicValue.getClass())) {
      continue;
    }
    int nbExpression=operator.getTypeParameters().size();
    Combination combination=new Combination(toCombine,operator,nbExpression);
    while (!combination.isEnd(this.stop)) {
      List<Expression> expressions=combination.perform(this.stop);
      CombinationExpression binaryExpression=create(operator,expressions,nopolContext);
      if (addExpressionIn(binaryExpression,result,false)) {
        if (callListener(binaryExpression)) {
          result.add(binaryExpression);
          if (nopolContext.isOnlyOneSynthesisResult() || result.size() > max_number_combinations) {
            return result;
          }
        }
      }
      if (operator instanceof BinaryOperator) {
        if (!((BinaryOperator)operator).isCommutative()) {
          binaryExpression=CombinationFactory.create(operator,Arrays.asList(expressions.get(1),expressions.get(0)),nopolContext);
          if (addExpressionIn(binaryExpression,result,false)) {
            if (callListener(binaryExpression)) {
              result.add(binaryExpression);
              if (nopolContext.isOnlyOneSynthesisResult() || result.size() > max_number_combinations) {
                return result;
              }
            }
          }
        }
      }
    }
  }
  return result;
}

Fixed version (ground truth):
private List<Expression> newCombiner(final List<Expression> toCombine,final List<Operator> operators,final Object angelicValue){
  final List<Expression> result=new ArrayList<>();
  if (nopolContext.isSortExpressions()) {
    Collections.sort(toCombine,Collections.reverseOrder());
  }
  for (  Operator operator : operators) {
    if (angelicValue != null && !operator.getReturnType().isAssignableFrom(angelicValue.getClass())) {
      continue;
    }
    int nbExpression=operator.getTypeParameters().size();
    Combination combination=new Combination(toCombine,operator,nbExpression);
    while (!combination.isEnd(this.stop)) {
      List<Expression> expressions=combination.perform(this.stop);
      CombinationExpression binaryExpression=create(operator,expressions,nopolContext);
      if (addExpressionIn(binaryExpression,result,false)) {
        if (callListener(binaryExpression)) {
          result.add(binaryExpression);
          if (nopolContext.isOnlyOneSynthesisResult() || result.size() > max_number_combinations) {
            return result;
          }
        }
      }
      if (operator instanceof BinaryOperator) {
        if (!((BinaryOperator)operator).isCommutative()) {
          binaryExpression=create(operator,Arrays.asList(expressions.get(1),expressions.get(0)),nopolContext);
          if (addExpressionIn(binaryExpression,result,false)) {
            if (callListener(binaryExpression)) {
              result.add(binaryExpression);
              if (nopolContext.isOnlyOneSynthesisResult() || result.size() > max_number_combinations) {
                return result;
              }
            }
          }
        }
      }
    }
  }
  return result;
}