"]: "+startUIDSet);
"]: "+startUIDSet+ ((limit >= 0) ? ("\nLimit: "+limit) : "\nNo limit"));
  private static List searchDown(      QuerySupport querySupport,       Set startUIDSet) {    if (VERBOSE) {      System.out.println(          "\n****************************************************"+          "\nSEARCH DOWN"+          "\nStart with ["+          ((startUIDSet != null) ? startUIDSet.size() : 0)+          "]: "+startUIDSet);    }    // find the starting objects    Collection startCol =      findUniqueObjects(          querySupport,           startUIDSet);    if (VERBOSE) {      System.out.println(          "Found "+          startCol.size()+          " of "+          ((startUIDSet != null) ? startUIDSet.size() : 0));    }    // make a list of Objs to search    WorkStack ws = new WorkStack();    ws.pushAll(startCol);    while (ws.hasWork()) {       UniqueObject uo = ws.take();       //       int type = getItemType(uo);       switch (type) {          case ITEM_TYPE_ALLOCATION:            {              Allocation alloc = (Allocation)uo;              // asset              ws.push(alloc.getAsset());	      // FIXME: what about the task?	      ws.push(alloc.getTask());              // if remote then remote task UID is a property            }            break;          case ITEM_TYPE_EXPANSION:            {              Expansion ex = (Expansion)uo;              ws.push(ex.getWorkflow());            }            break;          case ITEM_TYPE_AGGREGATION:            {              Aggregation agg = (Aggregation)uo;              Composition comp = agg.getComposition();              if (comp != null) {                // "^" ignore comp.getParentTasks                // child MPTask                ws.push(comp.getCombinedTask());              }            }            break;          case ITEM_TYPE_ASSET_TRANSFER:            {              AssetTransfer atrans = (AssetTransfer)uo;              // asset moved              ws.push(atrans.getAsset());              // destination asset              ws.push(atrans.getAssignee());	      // task	      ws.push(atrans.getTask());            }            break;          case ITEM_TYPE_TASK:            {              Task t = (Task)uo;              // direct object (Asset)              ws.push(t.getDirectObject());              // plan element              ws.push(t.getPlanElement());            }            break;          case ITEM_TYPE_ASSET:            {              Asset asset = (Asset)uo;              // asset group?              if (asset instanceof AssetGroup) {                // assets                ws.pushAll(((AssetGroup)asset).getAssets());              }            }            break;          case ITEM_TYPE_WORKFLOW:            {              Workflow wf = (Workflow)uo;              // tasks              ws.pushAll(wf.getTasks());            }            break;          case ITEM_TYPE_DISPOSITION:	    {	    // FIXME: What about the Task?	    PlanElement pe = (PlanElement)uo;	    // task	    ws.push(pe.getTask());	    break;	    }          case ITEM_TYPE_OTHER:	    {	      // Add in something for HCEs to point to PlanElements?	      if (uo instanceof org.cougaar.tools.csmart.ldm.event.HappinessChangeEvent) {		ws.push(((org.cougaar.tools.csmart.ldm.event.HappinessChangeEvent)uo).getRegarding());	      }	      break;	    }          default:            // ignore            break;       }     }    if (VERBOSE) {      System.out.println(          "done."+          "\n**********************************************\n");    }    List toL = new ArrayList(ws.sizePushed());    ws.toCollection(toL);    return toL;  }