*/
public boolean remove(Predicate p) {
if ( p == null ) return false;
IfExpression prev = null;
Expression expr = m_head;
while ( expr instanceof IfExpression ) {
IfExpression ifex = (IfExpression)expr;
Predicate test = (Predicate)ifex.getTestPredicate();
if ( p.equals(test) ) {
Expression elseex = ifex.getElseExpression();
ifex.setElseExpression(new ObjectLiteral(null));
if ( prev != null ) {
prev.setElseExpression(elseex);
if ( ifex == m_tail )
m_tail = prev;