code: protected Object coerceToType(Object param, Class<?> type)
              throws Throwable {
          if (type != Object.class)
              param = Types.castObject(param, type, Types.CAST);
          return Primitive.unwrap(param);
      }
docs: Coerce parameter values to parameter type and unwrap primitives.
  @param param the parameter value
  @param type the parameter type
  @return unwrapped coerced value
  @throws Throwable on cast errors