private static <T> T withContext(@NotNull InferenceContext context, @NotNull Supplier<? extends T> computation) {
    InferenceContext previous = ourInferenceContext.get();
    ourInferenceContext.set(context);
    try {
      return computation.get();
    }
    finally {
      ourInferenceContext.set(previous);
    }
  }
private static <T> T withContext(@NotNull InferenceContext context, @NotNull Supplier<? extends T> computation)