@Override
 public Collection<LassoUnderConstruction> process(final LassoUnderConstruction lasso)
     throws TermException {
   final MapEliminator elim =
       new MapEliminator(
           mServices,
           mManagedScript,
           mSymbolTable,
           mReplacementVarFactory,
           Arrays.asList(lasso.getStem(), lasso.getLoop()),
           mSettings);
   final EqualityAnalysisResult equalityAnalysisStem =
       new EqualityAnalysisResult(elim.getDoubletons());
   final EqualitySupportingInvariantAnalysis esia =
       new EqualitySupportingInvariantAnalysis(
           elim.getDoubletons(),
           mSymbolTable,
           mManagedScript.getScript(),
           mOriginalStem,
           mOriginalLoop,
           mModifiableGlobalsAtHonda);
   final EqualityAnalysisResult equalityAnalysisLoop = esia.getEqualityAnalysisResult();
   mArrayIndexSupportingInvariants.addAll(
       equalityAnalysisLoop.constructListOfEqualities(mManagedScript.getScript()));
   mArrayIndexSupportingInvariants.addAll(
       equalityAnalysisLoop.constructListOfNotEquals(mManagedScript.getScript()));
   final TransFormulaLR newStem =
       elim.getRewrittenTransFormula(lasso.getStem(), equalityAnalysisStem, equalityAnalysisLoop);
   final TransFormulaLR newLoop =
       elim.getRewrittenTransFormula(lasso.getLoop(), equalityAnalysisLoop, equalityAnalysisLoop);
   final LassoUnderConstruction newLasso = new LassoUnderConstruction(newStem, newLoop);
   assert RewriteArrays2.checkStemImplication(
           mServices,
           mServices.getLoggingService().getLogger(Activator.s_PLUGIN_ID),
           lasso,
           newLasso,
           mSymbolTable,
           mManagedScript)
       : "result of RewriteArrays too strong";
   return Collections.singleton(newLasso);
 }