code: @SuppressWarnings("unchecked")
      public static <T> Operation<T> operation(Class<? extends T> type, Operator operator,
                                               ImmutableList<Expression<?>> args) {
          if (type.equals(Boolean.class)) {
              return (Operation<T>) new PredicateOperation(operator, args);
          } else {
              return new OperationImpl<T>(type, operator, args);
          }
      }
docs: Create a new Operation expression
  
  @param type type of expression
  @param operator operator
  @param args operation arguments
  @return operation expression