/** * Replace all references to the variable bound by this let expression, that occur within the * action expression, with the given expression * * @param opt The optimizer * @param seq the expression * @throws net.sf.saxon.trans.XPathException */ public void replaceVariable(Optimizer opt, Expression seq) throws XPathException { PromotionOffer offer2 = new PromotionOffer(opt); offer2.action = PromotionOffer.INLINE_VARIABLE_REFERENCES; offer2.bindingList = new Binding[] {this}; offer2.containingExpression = seq; action = doPromotion(action, offer2); if (offer2.accepted) { // there might be further references to the variable offer2.accepted = false; replaceVariable(opt, seq); } if (isIndexedVariable() && seq instanceof VariableReference) { Binding newBinding = ((VariableReference) seq).getBinding(); if (newBinding instanceof Assignation) { ((Assignation) newBinding).setIndexedVariable(); } } }