code: public Object apply(Object pValue,
                          Object pContext,
                          Logger pLogger)
              throws ELException {
          if (pValue == null) {
              /*
              if (pLogger.isLoggingWarning ()) {
            pLogger.logWarning
              (Constants.ARITH_OP_NULL,
               getOperatorSymbol ());
              }
              */
              return PrimitiveObjects.getInteger(0);
          } else if (pValue instanceof String) {
              if (Coercions.isFloatingPointString(pValue)) {
                  double dval =
                          ((Number)
                                  (Coercions.coerceToPrimitiveNumber
                                          (pValue, Double.class, pLogger))).
                                  doubleValue();
                  return PrimitiveObjects.getDouble(-dval);
              } else {
                  long lval =
                          ((Number)
                                  (Coercions.coerceToPrimitiveNumber
                                          (pValue, Long.class, pLogger))).
                                  longValue();
                  return PrimitiveObjects.getLong(-lval);
              }
          } else if (pValue instanceof Byte) {
              return PrimitiveObjects.getByte
                      ((byte) -(((Byte) pValue).byteValue()));
          } else if (pValue instanceof Short) {
              return PrimitiveObjects.getShort
                      ((short) -(((Short) pValue).shortValue()));
          } else if (pValue instanceof Integer) {
              return PrimitiveObjects.getInteger
                      ((int) -(((Integer) pValue).intValue()));
          } else if (pValue instanceof Long) {
              return PrimitiveObjects.getLong
                      ((long) -(((Long) pValue).longValue()));
          } else if (pValue instanceof Float) {
              return PrimitiveObjects.getFloat
                      ((float) -(((Float) pValue).floatValue()));
          } else if (pValue instanceof Double) {
              return PrimitiveObjects.getDouble
                      ((double) -(((Double) pValue).doubleValue()));
          } else {
              if (pLogger.isLoggingError()) {
                  pLogger.logError
                          (Constants.UNARY_OP_BAD_TYPE,
                                  getOperatorSymbol(),
                                  pValue.getClass().getName());
              }
              return PrimitiveObjects.getInteger(0);
          }
      }
docs: Applies the operator to the given value