void () { boolean updateScheduled = false; try { if (isUpdateEnabled()) { final ThreadsDebuggerTree tree = getThreadsTree(); final DebuggerTreeNodeImpl root = (DebuggerTreeNodeImpl)tree.getModel().getRoot(); if (root != null) { final DebugProcessImpl process = getContext().getDebugProcess(); if (process != null) { process.getManagerThread().invoke(new DebuggerCommandImpl() { @Override protected void action() { try { updateNodeLabels(root); } finally { reschedule(); } } @Override protected void commandCancelled() { reschedule(); } }); updateScheduled = true; } } } } finally { if (!updateScheduled) { reschedule(); } } }