code: private static Pair<Atom[]> getAlignedAtomsForClusterSubunitMap(
  			List<SubunitCluster> clusters,
  			Map<Integer, Map<Integer, Integer>> clusterSubunitMap) {
  
  		List<Atom> atomArray1 = new ArrayList<Atom>();
  		List<Atom> atomArray2 = new ArrayList<Atom>();
  
  		// For each cluster of subunits
  		for (int key : clusterSubunitMap.keySet()) {
  
  			// Obtain the cluster and the alignment in it
  			SubunitCluster cluster = clusters.get(key);
  
  			// For each subunit matching in the cluster
  			for (Entry<Integer, Integer> pair : clusterSubunitMap.get(key)
  					.entrySet()) {
  
  				int i = pair.getKey();
  				int j = pair.getValue();
  
  				// Apend atoms to the arrays
  				atomArray1.addAll(Arrays.asList(cluster
  						.getAlignedAtomsSubunit(i)));
  				atomArray2.addAll(Arrays.asList(cluster
  						.getAlignedAtomsSubunit(j)));
  			}
  
  		}
  		return new Pair<Atom[]>(
  				atomArray1.toArray(new Atom[atomArray1.size()]),
  				atomArray2.toArray(new Atom[atomArray2.size()]));
  	}
docs: Returns a pair of Atom arrays corresponding to the alignment of subunit
  matchings, in order of appearance. Superposition of the two Atom sets
  gives the transformation of the complex.
  <p>
  Utility method to cumulative calculate the alignment Atoms.
  
  @param clusters
  List of SubunitClusters
  @param clusterSubunitMap
  map from cluster id to subunit matching
  @return pair of atom arrays to be superposed