code: public void processSpace(Properties props) {
          final double mergeThreshold = .15;
  
          WorkQueue workQueue = WorkQueue.getWorkQueue();
          Object key = workQueue.registerTaskGroup(clusterMap.size());
  
          // Iterate through all of the clusters and perform an agglomerative
          // cluster over the learned word senses.  If there is a reporter, the
          // cluster assignments are reported.
          for (Map.Entry<String, OnlineClustering<SparseDoubleVector>> entry :
                   clusterMap.entrySet()) {
              final String primaryKey = entry.getKey();
              final OnlineClustering<SparseDoubleVector> contexts =
                  entry.getValue();
              workQueue.add(key, new Runnable() {
                  public void run() {
                      clusterAndAssignSenses(contexts,primaryKey,mergeThreshold);
                  }
              });
          }
          workQueue.await(key);
  
          // Null out the cluster map so that the garbage collector can reclaim it
          // and any data associated with the Clusters.
          clusterMap = null;
  
          if (reporter != null)
              reporter.finalizeReport();
      }
docs: {@inheritDoc}