Что ещё за иерархия уровней?
чувствуете, как понятия начинают расходиться? номинальный контракт интерфейса, выраженный словами в комментарии (административный уровень) от фактического, выведенного из свойств исходного кода (логический уровень)? причем, пока у вас нет как минимум средств формальной верификации в компильтайме вы не можете сделать их одинаковыми, потому что фактические потомки вашего интерфейса всегда будут иметь лишние наборы логических свойств, которые могут быть внезапно оформлены в коде (см. пример с площадью shape) и не внесены в номинальный контракт