I notice that the Correlator class uses a WeakHashMap to store the FutureResults.  However, the values in the map have strong references to thier keys.  This means that the elements in the map never get removed and you may as well use a HashMap.  Did I miss something?