@Nullable
  private static DebuggerDfaRunner.Pupa makePupa(@NotNull StackFrameProxyEx proxy, @NotNull SmartPsiElementPointer<PsiElement> pointer) {
    Callable<DebuggerDfaRunner.Larva> action = () -> {
      try {
        return DebuggerDfaRunner.Larva.hatch(proxy, pointer.getElement());
      }
      catch (VMDisconnectedException | VMOutOfMemoryException | InternalException |
             EvaluateException | InconsistentDebugInfoException | InvalidStackFrameException ignore) {
        return null;
      }
    };
    Project project = pointer.getProject();
    DebuggerDfaRunner.Larva larva = ReadAction.nonBlocking(action).withDocumentsCommitted(project).executeSynchronously();
    if (larva == null) return null;
    DebuggerDfaRunner.Pupa pupa;
    try {
      pupa = larva.pupate();
    }
    catch (VMDisconnectedException | VMOutOfMemoryException | InternalException |
           EvaluateException | InconsistentDebugInfoException | InvalidStackFrameException ignore) {
      return null;
    }
    return pupa;
  }
@Nullable
  private static DebuggerDfaRunner.Pupa makePupa(@NotNull StackFrameProxyEx proxy, @NotNull SmartPsiElementPointer<PsiElement> pointer)