code: public void processSpace(Properties properties) {
          SparseDoubleVector empty = new CompactSparseVector();
          for (Map.Entry<RelationTuple, SparseDoubleVector> e :
                  relationVectors.entrySet()) {
              RelationTuple relation = e.getKey();
              SparseDoubleVector relationCounts = e.getValue();
              String headWord = termBasis.getDimensionDescription(relation.head);
              String rel = relation.relation;
  
              SelectionalPreference headPref = preferenceVectors.get(headWord);
  
              if (headPref == null)
                  LOG.fine("what the fuck");
  
              for (int index : relationCounts.getNonZeroIndices()) {
                  double frequency = relationCounts.get(index);
                  String depWord = termBasis.getDimensionDescription(index);
                  SelectionalPreference depPref = preferenceVectors.get(depWord);
  
                  // It's possible that the dependent word is not being
                  // represented in this space, so skip missing terms.
                  if (depPref == null)
                      continue;
  
                  headPref.addPreference(
                          rel, depPref.lemmaVector, frequency);
                  depPref.addInversePreference(
                          rel, headPref.lemmaVector, frequency);
              }
              e.setValue(empty);
          }
  
          // Null out all the relation tuple counts so that memory can be
          // freed up.
          relationVectors = null;
      }
docs: {@inheritDoc}