code: public Object apply(Object pLeft,
                          Object pRight,
                          Object pContext,
                          Logger pLogger)
              throws ELException {
          if (pLeft == null &&
                  pRight == null) {
              if (pLogger.isLoggingWarning()) {
                  pLogger.logWarning
                          (Constants.ARITH_OP_NULL,
                                  getOperatorSymbol());
              }
              return PrimitiveObjects.getInteger(0);
          }
  
          if ((pLeft != null &&
                  (Coercions.isFloatingPointType(pLeft) ||
                          Coercions.isFloatingPointString(pLeft))) ||
                  (pRight != null &&
                          (Coercions.isFloatingPointType(pRight) ||
                                  Coercions.isFloatingPointString(pRight)))) {
              double left =
                      Coercions.coerceToPrimitiveNumber(pLeft, Double.class, pLogger).
                              doubleValue();
              double right =
                      Coercions.coerceToPrimitiveNumber(pRight, Double.class, pLogger).
                              doubleValue();
  
              try {
                  return PrimitiveObjects.getDouble(left % right);
              }
              catch (Exception exc) {
                  if (pLogger.isLoggingError()) {
                      pLogger.logError
                              (Constants.ARITH_ERROR,
                                      getOperatorSymbol(),
                                      "" + left,
                                      "" + right);
                  }
                  return PrimitiveObjects.getInteger(0);
              }
          } else {
              long left =
                      Coercions.coerceToPrimitiveNumber(pLeft, Long.class, pLogger).
                              longValue();
              long right =
                      Coercions.coerceToPrimitiveNumber(pRight, Long.class, pLogger).
                              longValue();
  
              try {
                  return PrimitiveObjects.getLong(left % right);
              }
              catch (Exception exc) {
                  if (pLogger.isLoggingError()) {
                      pLogger.logError
                              (Constants.ARITH_ERROR,
                                      getOperatorSymbol(),
                                      "" + left,
                                      "" + right);
                  }
                  return PrimitiveObjects.getInteger(0);
              }
          }
      }
docs: Applies the operator to the given value