Using code contracts on abstract classes