pred = new UnaryPredicate() { public boolean execute(Object o) { if (o instanceof Asset) { Asset asset = (Asset) o; ClusterPG clusterPG = asset.getClusterPG(); if (clusterPG != null) { MessageAddress assetCID = clusterPG.getMessageAddress(); return RestartLogicProviderHelper.matchesRestart( self, cid, assetCID); } } return false; } }; for (e = rootplan.searchBlackboard(pred); e.hasMoreElements(); ) { Asset asset = (Asset) e.nextElement();  if (related(asset)) {  HashMap hash = new HashMap(3);  RelationshipSchedule relationshipSchedule = (RelationshipSchedule)((HasRelationships)asset).getRelationshipSchedule();  Collection relationships = new ArrayList(relationshipSchedule); for (Iterator iterator = relationships.iterator(); iterator.hasNext();) { Relationship relationship = (Relationship)iterator.next();  Asset otherAsset = (Asset)relationshipSchedule.getOther(relationship);  NewSchedule verifySchedule = (NewSchedule)hash.get(otherAsset); if (verifySchedule == null) { verifySchedule = ldmf.newAssignedRelationshipSchedule(); hash.put(otherAsset, verifySchedule); }  verifySchedule.add(ldmf.newAssignedRelationshipElement(relationship)); }  for (Iterator iterator = hash.keySet().iterator(); iterator.hasNext();) { Asset receivingAsset = (Asset)iterator.next();  Schedule verifySchedule = (Schedule)hash.get(receivingAsset);  NewAssetVerification nav = ldmf.newAssetVerification(ldmf.cloneInstance(asset), ldmf.cloneInstance(receivingAsset), verifySchedule); nav.setSource(self); nav.setDestination(asset.getClusterPG().getMessageAddress()); rootplan.sendDirective(nav); } } else {  logger.error("AssetTransferLP - unable to verify transfer of " + asset + "\n."); }  } }
  public void restart(final MessageAddress cid) {    UnaryPredicate pred = new UnaryPredicate() {      public boolean execute(Object o) {        if (o instanceof AssetTransfer) {          AssetTransfer at = (AssetTransfer) o;          MessageAddress assignee =             at.getAssignee().getClusterPG().getMessageAddress();          return             RestartLogicProviderHelper.matchesRestart(                self, cid, assignee);        }        return false;      }    };    Enumeration enum = rootplan.searchBlackboard(pred);    while (enum.hasMoreElements()) {      AssetTransfer at = (AssetTransfer) enum.nextElement();      rootplan.sendDirective(createAssetAssignment(at, AssetAssignment.REPEAT, true));    }