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);
}

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 ) ; }
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 .
