virtual void popFront() { l.popFront(); r.popFront(); }
virtual void popFront() { if (!l.empty()) l.popFront(); else r.popFront(); }
virtual void popFront() { do { r.popFront(); } while (!r.empty() && !p(r.front())); }