code: public <T> ObjectInstantiator<T> newInstantiatorOf(Class<T> type) {
  
        if(PlatformDescription.isThisJVM(HOTSPOT) || PlatformDescription.isThisJVM(OPENJDK)) {
           // Java 7 GAE was under a security manager so we use a degraded system
           if(PlatformDescription.isGoogleAppEngine() && PlatformDescription.SPECIFICATION_VERSION.equals("1.7")) {
              if(Serializable.class.isAssignableFrom(type)) {
                 return new ObjectInputStreamInstantiator<>(type);
              }
              return new AccessibleInstantiator<>(type);
           }
           // The UnsafeFactoryInstantiator would also work. But according to benchmarks, it is 2.5
           // times slower. So I prefer to use this one
           return new SunReflectionFactoryInstantiator<>(type);
        }
        else if(PlatformDescription.isThisJVM(DALVIK)) {
           if(PlatformDescription.isAndroidOpenJDK()) {
              // Starting at Android N which is based on OpenJDK
              return new UnsafeFactoryInstantiator<>(type);
           }
           if(ANDROID_VERSION <= 10) {
              // Android 2.3 Gingerbread and lower
              return new Android10Instantiator<>(type);
           }
           if(ANDROID_VERSION <= 17) {
              // Android 3.0 Honeycomb to 4.2 Jelly Bean
              return new Android17Instantiator<>(type);
           }
           // Android 4.3 until Android N
           return new Android18Instantiator<>(type);
        }
        else if(PlatformDescription.isThisJVM(GNU)) {
           return new GCJInstantiator<>(type);
        }
        else if(PlatformDescription.isThisJVM(PERC)) {
           return new PercInstantiator<>(type);
        }
  
        // Fallback instantiator, should work with most modern JVM
        return new UnsafeFactoryInstantiator<>(type);
  
     }
docs: Return an {@link ObjectInstantiator} allowing to create instance without any constructor being
  called.
  
  @param type Class to instantiate
  @return The ObjectInstantiator for the class