DebuggerContextImpl getFrameDebuggerContext(@Nullable DebuggerContextImpl context) {
    DebuggerManagerThreadImpl.assertIsManagerThread();
    if (context == null) {
      context = myDebugProcess.getDebuggerContext();
    }
    if (context.getFrameProxy() != getStackFrameProxy()) {
      SuspendManager suspendManager = myDebugProcess.getSuspendManager();
      ThreadReferenceProxyImpl thread = getStackFrameProxy().threadProxy();
      SuspendContextImpl pausedSuspendingContext = SuspendManagerUtil.getPausedSuspendingContext(suspendManager, thread);
      SuspendContextImpl threadSuspendContext =
        pausedSuspendingContext != null ? pausedSuspendingContext : SuspendManagerUtil.findContextByThread(suspendManager, thread);

      context = DebuggerContextImpl.createDebuggerContext(
        myDebugProcess.mySession,
        threadSuspendContext,
        thread,
        getStackFrameProxy());
      context.setPositionCache(myDescriptor.getSourcePosition());
      context.initCaches();
    }
    return context;
  }
DebuggerContextImpl getFrameDebuggerContext(@Nullable DebuggerContextImpl context)