protocol ConditionExt<Self> { ... }