sclass RegularlyClearedAverage > Average { NotTooOften clearTimer; *() {} *(NotTooOften *clearTimer) {} void add(double d) { possiblyClear(); super.add(d); } void possiblyClear { if (clearTimer?!) clear(); } }