public static <T, E extends Throwable> T performPsiModification(@Nullable String trace, @NotNull ThrowableComputable<T, E> runnable) throws E {
    beginPsiModification(trace);
    try {
      return runnable.compute();
    }
    finally {
      endPsiModification();
    }
  }
public static <T, E extends Throwable> T performPsiModification(@Nullable String trace, @NotNull ThrowableComputable<T, E> runnable)