public static boolean isPassByValue(Class<?> clazz) {
    return String.class.isAssignableFrom(clazz)
           || Boolean.class.isAssignableFrom(clazz)
           || boolean.class.isAssignableFrom(clazz)
           || Integer.class.isAssignableFrom(clazz)
           || int.class.isAssignableFrom(clazz)
           || Long.class.isAssignableFrom(clazz)
           || long.class.isAssignableFrom(clazz)
           || Byte.class.isAssignableFrom(clazz)
           || byte.class.isAssignableFrom(clazz)
           || Short.class.isAssignableFrom(clazz)
           || short.class.isAssignableFrom(clazz)
           || Double.class.isAssignableFrom(clazz)
           || double.class.isAssignableFrom(clazz)
           || Float.class.isAssignableFrom(clazz)
           || float.class.isAssignableFrom(clazz)
           || LocalDate.class.isAssignableFrom(clazz)
           || LocalDateTime.class.isAssignableFrom(clazz)
           || Duration.class.isAssignableFrom(clazz)
           || Point.class.isAssignableFrom(clazz)
           || PassByValue.class.isAssignableFrom(clazz);
  }
public static boolean isPassByValue(Class<?> clazz)