public static CompletableFuture<? extends Type> type(@Nullable Value value) {
    if (value == null) {
      return completedFuture(null);
    }
    if (value instanceof ObjectReferenceImpl && isAsyncEnabled()) {
      return reschedule(((ObjectReferenceImpl)value).typeAsync());
    }
    return completedFuture(value.type());
  }
public static CompletableFuture<? extends Type> type(@Nullable Value value)