docs: public static void loadTexture(final GVRContext gvrContext,
              final ResourceCache<GVRImage> textureCache,
              final CancelableCallback<GVRImage> callback,
              final GVRAndroidResource resource,
              final int priority,
              final int quality) {
          Threads.spawn(new Runnable() {
              @Override
              public void run() {
                  validateCallbackParameters(gvrContext, callback, resource);
  
                  final GVRImage cached = textureCache == null ? null
                          : textureCache.get(resource);
                  if (cached != null) {
                      Log.v("ASSET", "Texture: %s loaded from cache", cached.getFileName());
                      callback.loaded(cached, resource);
                  } else {
                      // 'Sniff' out compressed textures on a thread from the
                      // thread-pool
                      final GVRCompressedTextureLoader loader = resource
                              .getCompressedLoader();
                      if (loader != null) {
                          CancelableCallback<GVRImage> actualCallback = textureCache == null
                                  ? callback
                                  : textureCache.wrapCallback(callback);
  
                          AsyncCompressedTexture.loadTexture(gvrContext,
                                  CancelableCallbackWrapper.wrap(
                                          GVRCompressedImage.class,
                                          actualCallback),
                                  resource, priority);
                      } else {
                          // We don't have a compressed texture: pass to
                          // AsyncBitmapTexture code
                          CancelableCallback<GVRImage> actualCallback = textureCache == null
                                  ? callback
                                  : textureCache.wrapCallback(callback);
  
                          AsyncBitmapTexture.loadTexture(gvrContext,
                                  CancelableCallbackWrapper.wrap(
                                          GVRBitmapImage.class, actualCallback),
                                  resource, priority);
                      }
                  }
              }
          });
      }