/**
  * Generates the GenericUnaryExpression values for a value and operator
  *
  * @param value the value for which the other case has to be generated
  * @param operator the operator of the binary expression
  * @param leftVariable whether the left side is the variable (true), or the right side (false)
  * @return two GenericUnaryExpression values to condition coverage the binary expression
  */
 public List<GenericAbstractElement> possibleUnaryExpressions(
     GenericUnaryExpression expression, GenericBinaryOperator operator, boolean leftVariable) {
   List<GenericAbstractElement> result = new ArrayList<GenericAbstractElement>();
   GenericUnaryOperator unaryOperator = expression.getOperator();
   switch (unaryOperator) {
     case NEGATE:
       if (expression.getExpression() instanceof GenericBoolean) {
         List<GenericAbstractElement> booleans =
             possibleBooleans(((GenericBoolean) expression.getExpression()).getValue(), operator);
         for (GenericAbstractElement element : booleans) {
           result.add(new GenericUnaryExpression(element, unaryOperator));
         }
       }
       return result;
     case POSITIVE:
       if (expression.getExpression() instanceof GenericNumber) {
         List<GenericAbstractElement> numbers =
             possibleNumbers(
                 ((GenericNumber) expression.getExpression()).getValue(), operator, leftVariable);
         for (GenericAbstractElement element : numbers) {
           result.add(new GenericUnaryExpression(element, unaryOperator));
         }
       }
       return result;
     case NEGATIVE:
       if (expression.getExpression() instanceof GenericNumber) {
         List<GenericAbstractElement> numbers =
             possibleNumbers(
                 ((GenericNumber) expression.getExpression()).getValue(), operator, !leftVariable);
         for (GenericAbstractElement element : numbers) {
           result.add(new GenericUnaryExpression(element, unaryOperator));
         }
       }
       return result;
   }
   return result;
 }
 /**
  * Checks whether the unary expression contains a binary expression with unassigned variables by
  * checking its child expression
  *
  * @param expression the GenericUnaryExpression to be checked
  */
 public void check(GenericUnaryExpression expression) {
   check(expression.getExpression());
 }