public <T, E extends Throwable> T computeInLibraryScope(ThrowableComputable<T, E> action) throws E {
    myIsInsideLibraryScope.set(true);
    try {
      return action.compute();
    }
    finally {
      myIsInsideLibraryScope.set(false);
    }
  }
public <T, E extends Throwable> T computeInLibraryScope(ThrowableComputable<T, E> action)