void (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"); }