code: protected void eleminateRedundent(ElemTemplateElement psuedoVarRecipient, Vector paths)
    {
      int n = paths.size();
      int numPathsEliminated = 0;
      int numUniquePathsEliminated = 0;
      for (int i = 0; i < n; i++)
      {
        ExpressionOwner owner = (ExpressionOwner) paths.elementAt(i);
        if (null != owner)
        {
          int found = findAndEliminateRedundant(i + 1, i, owner, psuedoVarRecipient, paths);
          if (found > 0)
                    numUniquePathsEliminated++;
          numPathsEliminated += found;
        }
      }
      
      eleminateSharedPartialPaths(psuedoVarRecipient, paths);
      
      if(DIAGNOSE_NUM_PATHS_REDUCED)
  		diagnoseNumPaths(paths, numPathsEliminated, numUniquePathsEliminated);
    }
docs: Method to be called after the all expressions within an
  node context have been visited.  It eliminates redundent
  expressions by creating a variable in the psuedoVarRecipient
  for each redundent expression, and then rewriting the redundent
  expression to be a variable reference.
  
  @param psuedoVarRecipient The owner of the subtree from where the
  paths were collected.
  @param paths A vector of paths that hold ExpressionOwner objects,
  which must yield LocationPathIterators.