myLogger.info(getAgentIdentifier() + ": New is:" + rfdTask);
myLogger.info("New is:" + rfdTask);
  protected void processPotentialChangedOpCons() {    NonOverlappingTimeSpanSet currentRFDInfos =       buildRFDInfos(myRFDSubscription);    TimeSpanSet addedRFDInfos = new TimeSpanSet();    TimeSpanSet removedRFDInfos = new TimeSpanSet();    Collection opConInfoRelays = new ArrayList();    NonOverlappingTimeSpanSet orgActivities =       new NonOverlappingTimeSpanSet(myOrgActivitySubscription);    NonOverlappingTimeSpanSet opconInfos =       buildOpConInfos(orgActivities);    for (Iterator iterator = opconInfos.iterator(); 	 iterator.hasNext(); ) {      OpConInfo opconInfo = (OpConInfo) iterator.next();      Collection affectedRFDInfos = currentRFDInfos.intersectingSet(opconInfo);      TimeSpanSet rfdSchedule = new TimeSpanSet(affectedRFDInfos);      boolean covered = false;      for (Iterator rfdIterator = rfdSchedule.iterator();	   rfdIterator.hasNext();) {	RFDInfo existingRFDInfo = (RFDInfo) rfdIterator.next();	// Check that RFDs map to opCon/Start/End of org activity.	// If different, remove and generate new.	// DON'T TRY TO BE CLEVER	if (covered) {	  removedRFDInfos.add(existingRFDInfo);	} else if ((existingRFDInfo.getOpSuperior().equals(opconInfo.getOpCon())) &&		   (existingRFDInfo.getStartTime() == opconInfo.getStartTime()) &&		   (existingRFDInfo.getEndTime() == opconInfo.getEndTime())) {	  covered = true;	} else {	  if (myLogger.isInfoEnabled()) {	    myLogger.info(getAgentIdentifier() + 			    ": opconInfo - " + opconInfo + 			    " does not match overlapping RFD - " +			    existingRFDInfo.getTask());	  }	  	  // Need to make a new rfd for this timespan	  // Don't know where it will end up,	  //  but it can't be here anymore	  removedRFDInfos.add(existingRFDInfo);	  // May not be able to make the new RFD task but no point in 	  // generating additional work	  covered = true;	    // Look for local version of OpCon asset	  Organization localOpCon = findLocalOrganization(opconInfo.getOpCon());	  	  // If no local version, send an OpConInfoRelay to agent. Will be	  // able to build a local version of the asset with the relay 	  // response	  if (localOpCon == null) {	    boolean relayExists = false;	    	    // Check whether I've already created a relay to this OpCon in	    // the current execute cycle	    for (Iterator relayIterator = opConInfoRelays.iterator();		 relayIterator.hasNext();) {	      OpConInfoRelay addedRelay = 		(OpConInfoRelay) relayIterator.next();	      if (addedRelay.getTarget().equals(MessageAddress.getMessageAddress(opconInfo.getOpCon()))) {		relayExists = true;		break;	      }	    }	    	    // Have not created a relay so create/publish one	    if (!relayExists) {	      OpConInfoRelay opConRelay = createOpConInfoRelay(opconInfo.getOpCon());	      getBlackboardService().publishAdd(opConRelay);	      opConInfoRelays.add(opConRelay);	    }	  } else {	    // Have a local copy of the OpCon asset so I can go ahead and	    // make the corresponding RFDs	    	    Task rfdTask = createOpConRFD(localOpCon, 					  opconInfo.getStartTime(), 					  opconInfo.getEndTime()); 	    addedRFDInfos.add(new RFDInfo(rfdTask));	    if (myLogger.isInfoEnabled()) {	      myLogger.info(getAgentIdentifier() + 			    ": New is:" + rfdTask);	    }	  }    }      }    }    if (myLogger.isInfoEnabled())      myLogger.info(getAgentIdentifier() + 		    " processPotentialChangedOpCons: adding  " + 		    addedRFDInfos.size() + " RFDs , removing " +		    removedRFDInfos.size() + " RFDs.");    for (Iterator j = removedRFDInfos.iterator(); j.hasNext(); ) {      Task rfd = ((RFDInfo) j.next()).getTask();      getBlackboardService().publishRemove(rfd);      if (myLogger.isInfoEnabled())	myLogger.info(getAgentIdentifier() + "- Removing RFD: " + rfd);    }            for (Iterator j = addedRFDInfos.iterator(); j.hasNext(); ) {      Task rfd = ((RFDInfo) j.next()).getTask();      getBlackboardService().publishAdd(rfd);      if (myLogger.isInfoEnabled())	myLogger.info(getAgentIdentifier() + "- Adding RFD: " + rfd);    }  }