Buggy code:
public class ServerDebugTarget extends ServerDebugElement implements VmListener , IBreakpointManagerListener , IDebugTarget { private static ServerDebugTarget activeTarget ; public static ServerDebugTarget getActiveTarget ( ) { } private static void setActiveTarget ( ServerDebugTarget target ) { } private ILaunch launch ; private IProcess process ; private VmConnection connection ; private List < ServerDebugThread > threads = new ArrayList < ServerDebugThread > ( ) ; private boolean firstBreak = true ; private ServerBreakpointManager breakpointManager ; private VmIsolate currentIsolate ; @ SuppressWarnings ( "unused" ) private IProject currentProject ; private UriToFileResolver uriToFileResolver ; private IEclipsePreferences preferences ; private IEclipsePreferences . IPreferenceChangeListener preferenceListener ; public ServerDebugTarget ( ILaunch launch , IProcess process , int connectionPort ) { } public ServerDebugTarget ( ILaunch launch , IProcess process , String connectionHost , int connectionPort ) { } @ Override public void breakpointAdded ( IBreakpoint breakpoint ) { } @ Override public void breakpointChanged ( IBreakpoint breakpoint , IMarkerDelta delta ) { } @ Override public void breakpointManagerEnablementChanged ( boolean enabled ) { } @ Override public void breakpointRemoved ( IBreakpoint breakpoint , IMarkerDelta delta ) { } @ Override public void breakpointResolved ( VmIsolate isolate , VmBreakpoint breakpoint ) { } @ Override public boolean canDisconnect ( ) { } @ Override public boolean canResume ( ) { } @ Override public boolean canSuspend ( ) { } @ Override public boolean canTerminate ( ) { } public void connect ( ) throws DebugException { } @ Override public void connectionClosed ( VmConnection connection ) { } @ Override public void connectionOpened ( VmConnection connection ) { } @ Override public void debuggerPaused ( PausedReason reason , VmIsolate isolate , List < VmCallFrame > frames , VmValue exception ) { } @ Override public void debuggerResumed ( VmIsolate isolate ) { } @ Override public void disconnect ( ) throws DebugException { } @ Override public void fireTerminateEvent ( ) { } @ Override public IDebugTarget getDebugTarget ( ) { } @ Override public ILaunch getLaunch ( ) { } @ Override public IMemoryBlock getMemoryBlock ( long startAddress , long length ) throws DebugException { } @ Override public String getName ( ) throws DebugException { } @ Override public IProcess getProcess ( ) { } @ Override public IThread [ ] getThreads ( ) throws DebugException { } public UriToFileResolver getUriToFileResolver ( ) { } public VmConnection getVmConnection ( ) { } @ Override public boolean hasThreads ( ) throws DebugException { } @ Override public boolean isDisconnected ( ) { } @ Override public void isolateCreated ( VmIsolate isolate ) { addThread ( new ServerDebugThread ( this , isolate ) ) ; try { <START_BUG> connection . enableAllSteppingSync ( isolate ) ; <END_BUG> } catch ( IOException e ) { DartDebugCorePlugin . logError ( e ) ; } breakpointManager . setPauseOnExceptionSync ( isolate ) ; } @ Override public void isolateShutdown ( VmIsolate isolate ) { } @ Override public boolean isSuspended ( ) { } @ Override public boolean isTerminated ( ) { } @ Override public void resume ( ) throws DebugException { } @ Override public boolean supportsBreakpoint ( IBreakpoint breakpoint ) { } @ Override public boolean supportsStorageRetrieval ( ) { } @ Override public void suspend ( ) throws DebugException { } @ Override public void terminate ( ) throws DebugException { } public void writeToStdout ( String message ) { } protected ServerDebugThread findThread ( VmIsolate isolate ) { } protected DartBreakpoint getBreakpointFor ( List < VmCallFrame > frames ) { } protected DartBreakpoint getBreakpointFor ( VmCallFrame frame ) { } protected VmIsolate getCurrentIsolate ( ) { } @ Override protected ServerDebugTarget getTarget ( ) { } private void addThread ( ServerDebugThread thread ) { } private void dispose ( ) { } private void fireStreamAppended ( String message ) { } private void firstIsolateInit ( VmIsolate isolate ) { } private DartBreakpoint getBreakpointFor ( VmLocation location ) { } private Method getMethod ( Object obj , String methodName ) { } private void handlePreferenceChange ( IEclipsePreferences . PreferenceChangeEvent event ) { } private boolean hasBreakpointAtTopFrame ( List < VmCallFrame > frames ) { } private void printExceptionToStdout ( VmValue exception ) { } private void removeThread ( ServerDebugThread thread ) { } private void setBreakpointsActive ( boolean enabled ) { } private void sleep ( int millis ) { } }

Fix:
connection . enableAllStepping ( isolate ) ;