void (@NotNull CachedValueProvider.Result<?> result, @Nullable Object original) { long time = currentTime(); ThreadContext context = ourContext.get(); if (context.consumer == null || context.epoch != ourGlobalContext.epoch) return; Frame frame = context.topFrame; if (frame == null) return; EventPlace place = original == null ? place(CachedValueProfiler::findComputationPlace) : original instanceof CachedValueProvider.Result ? frame.places.get(original) : original instanceof Function ? place(CachedValueProfiler::findCallerPlace) : null; if (place == null) return; frame.places.put(result, place); ourFrameOverhead.overhead.addAndGet(currentTime() - time); }