@Nullable
  private T doGet() throws ExecutionException {
    Pair<Object, Boolean> pair = myValue;
    if (pair == null) return null;

    if (!pair.second) throw new ExecutionException(((Throwable)pair.first).getMessage(), (Throwable)pair.first);
    //noinspection unchecked
    return (T)pair.first;
  }
@Nullable
  private T doGet()