if (ws.sizePushed() > limit) {    break search_up_loop; }
  private static List searchUp(      QuerySupport querySupport,       Set startUIDSet) {    // get this Cluster's identifier    ClusterIdentifier localCID =      querySupport.getClusterIdentifier();    if (VERBOSE) {      System.out.println(          "\n*****************************************************"+          "\nSEARCH UP");    }    // make a list of Objs to search    WorkStack ws = new WorkStack();    Set findUIDSet = new HashSet(startUIDSet);    while (!(findUIDSet.isEmpty())) {      if (VERBOSE) {        System.out.println(            "\nFind ["+findUIDSet.size()+"]: "+findUIDSet);      }      // find the starting objects      Collection foundCol =        findUniqueObjects(            querySupport,             findUIDSet);      findUIDSet.clear();      if (VERBOSE) {        System.out.println(            "Found "+foundCol.size()+" of "+findUIDSet.size());      }      ws.pushAll(foundCol);      while (ws.hasWork()) {        UniqueObject uo = ws.take();        //        if (uo instanceof PlanElement) {          PlanElement pe = (PlanElement)uo;          // task          ws.push(pe.getTask());        } else if (uo instanceof Task) {          // task parent(s)          if (uo instanceof MPTask) {            MPTask mpt = (MPTask)uo;            // parent tasks            ws.pushAll(mpt.getParentTasks());          } else {            Task t = (Task)uo;            // only have a UID for the parent            ClusterIdentifier tCID = t.getSource();            if ((tCID == null) ||                (localCID.equals(tCID))) {              // local Task, must search by UID              UID uid = t.getParentTaskUID();              if ((uid != null) &&                  (!(ws.hasPushedKey(uid)))) {                // add the UID to next search pass.                //                // note that this "find" Task may be found in                // this pass indirectly, which will waste a query,                // but it's a rare and harmless situation                findUIDSet.add(uid);              }            } else {              // remote up!            }          }        } else if (uo instanceof Workflow) {          Workflow wf = (Workflow)uo;          // task          ws.push(wf.getParentTask());        } else {          // ignore        }      }    }    if (VERBOSE) {      System.out.println(          "done."+          "\n****************************************************\n");    }    List toL = new ArrayList(ws.sizePushed());    ws.toCollection(toL);    return toL;  }