System.out.println("Propagating from " + getClusterIdentifier() + " to " + org);
  public synchronized void execute() {    for ( Iterator subIt = subscriptionCollection.iterator(); subIt.hasNext(); ) {      TransferableSubscriptions currentSubscriptions = (TransferableSubscriptions)subIt.next();            UnaryPredicate         destPred = currentSubscriptions.getDestinationPredicate();      ArrayList alreadySent = new ArrayList();      if (organizations.hasChanged()) {        Collection adds = organizations.getAddedCollection();        if (adds != null) {          for (Iterator iterator = Filters.filter(adds, destPred).iterator();                iterator.hasNext();) {            Organization org = (Organization)iterator.next();                        // Transfer all existing transferables to a new destination            for (Iterator transferables =                    currentSubscriptions.getTransferableSubscription().getCollection().iterator();                  transferables.hasNext();) {              transfer((Transferable)transferables.next(), org);            }            alreadySent.add(org);          }        }        // BOZO - Missing logic to rescind transferables from destinations        // which are no longer valid. Also sending all transferables each        // time a valid destination changes.        Collection changes = organizations.getChangedCollection();        if (changes != null) {          for (Iterator iterator =                  Filters.filter(changes, destPred).iterator();                iterator.hasNext();) {            Organization org = (Organization)iterator.next();            boolean isRelationshipChange = false;            Set changeReports = organizations.getChangeReports(org);            if (changeReports != null) {              for (Iterator i = changeReports.iterator(); i.hasNext(); ) {                ChangeReport changeReport = (ChangeReport) i.next();                if (changeReport instanceof RelationshipSchedule.RelationshipScheduleChangeReport) {                  isRelationshipChange = true;                  break;                }              }            }            if (isRelationshipChange) {              System.out.println("Propagating from " + getClusterIdentifier() + " to " + org);              for (Iterator transferables =                      currentSubscriptions.getTransferableSubscription().getCollection().iterator();                    transferables.hasNext();) {                transfer((Transferable)transferables.next(), org);              }              alreadySent.add(org);            }          }        }        // BOZO - No logic to rescind transferable from organizations which         // have been removed      }      IncrementalSubscription ts =         currentSubscriptions.getTransferableSubscription();      if (ts.hasChanged()) {        Collection destinations =           Filters.filter(organizations.getCollection(), destPred);        Collection adds = ts.getAddedCollection();        if (adds != null) {          for (Iterator transferables = ts.getAddedCollection().iterator();                transferables.hasNext();) {            Transferable t = (Transferable)transferables.next();                        Iterator iterator = destinations.iterator();            while (iterator.hasNext()) {              Organization org = (Organization)iterator.next();              // we already sent these              if (!alreadySent.contains(org))                transfer(t,org);            }          }        }                // send modified transferable to existing destinations;        Collection changes = ts.getChangedCollection();        if (changes != null) {          for (Iterator transferables = ts.getChangedCollection().iterator();                transferables.hasNext();) {            Transferable t = (Transferable)transferables.next();                        Iterator iterator = destinations.iterator();            while (iterator.hasNext()) {              Organization org = (Organization)iterator.next();              transfer(t,org);            }          }        }      }    }  }