private void populate(Object o) {
   if (o instanceof IStackFrame) {
     IStackFrame f = (IStackFrame) o;
     NesCVariableNameParser varPars =
         new NesCVariableNameParser(
             new NesCSeparatorFromCDTLaunch(f.getDebugTarget().getLaunch()));
     try {
       if (f.hasVariables()) {
         IVariable[] vars = f.getVariables();
         populate(vars, varPars);
       }
     } catch (DebugException e) {
       TinyOSDebugPlugin.getDefault().log("Exception while populating viewer.", e);
     }
   } else {
     clear();
   }
 }
  private void antCallStack(boolean sepVM) throws CoreException {
    String fileName = "85769"; // $NON-NLS-1$
    IFile file = getIFile(fileName + ".xml"); // $NON-NLS-1$
    ILineBreakpoint bp = createLineBreakpoint(18, file);
    AntThread thread = null;
    try {
      if (sepVM) {
        fileName += "SepVM"; // $NON-NLS-1$
      }
      thread = launchToLineBreakpoint(fileName, bp);

      IStackFrame[] frames = thread.getStackFrames();

      assertTrue(frames.length == 3);
      IStackFrame frame = frames[0];
      frame.getName().equals(""); // $NON-NLS-1$
    } finally {
      terminateAndRemove(thread);
      removeAllBreakpoints();
    }
  }
 protected boolean isThreadCompatible(Object[] targets) {
   if (targets.length == 1) {
     return true;
   }
   // check if frames from same thread
   Set<IThread> threads = new HashSet<IThread>(targets.length);
   for (int i = 0; i < targets.length; i++) {
     Object object = targets[i];
     IStackFrame frame = null;
     if (object instanceof IStackFrame) {
       frame = (IStackFrame) object;
     } else if (object instanceof IAdaptable) {
       frame = ((IAdaptable) object).getAdapter(IStackFrame.class);
     }
     if (frame != null) {
       if (!threads.add(frame.getThread())) {
         return false;
       }
     }
   }
   return true;
 }
 private String getStackFrameText(IStackFrame frame) {
   return frame.toString();
 }