@TestOnly
  @SuppressWarnings("UseOfSystemOutOrSystemErr")
  private static void checkAllClasses(DebuggerContextImpl debuggerContext) {
    DebugProcessImpl process = debuggerContext.getDebugProcess();
    @SuppressWarnings("ConstantConditions")
    VirtualMachine machine = process.getVirtualMachineProxy().getVirtualMachine();
    PositionManagerImpl positionManager = new PositionManagerImpl(process); // only default position manager for now
    List<ReferenceType> types = machine.allClasses();
    System.out.println("Checking " + types.size() + " classes");
    int i = 0;
    for (ReferenceType type : types) {
      i++;
      try {
        for (Location loc : type.allLineLocations()) {
          SourcePosition position =
            ReadAction.compute(() -> {
              try {
                return positionManager.getSourcePosition(loc);
              }
              catch (NoDataException ignore) {
                return null;
              }
            });
          if (position == null) {
            continue;
          }
          if (position.getFile() instanceof PsiCompiledFile) {
            VirtualFile file = position.getFile().getVirtualFile();
            if (file == null || file.getUserData(LineNumbersMapping.LINE_NUMBERS_MAPPING_KEY) == null) {
              break; // no mapping - skip the whole file
            }
            if (DebuggerUtilsEx.bytecodeToSourceLine(position.getFile(), loc.lineNumber()) == -1) {
              continue;
            }
          }
          check(loc, position, process.getProject()).thenAccept(res -> {
            if (res == ThreeState.NO) {
              System.out.println("failed " + type);
            }
          });
        }
      }
      catch (AbsentInformationException ignored) {
      }
    }
    System.out.println("Done checking");
  }
@TestOnly
  @SuppressWarnings("UseOfSystemOutOrSystemErr")
  private static void checkAllClasses(DebuggerContextImpl debuggerContext)