interface IRequiredOptional { out void a(); behaviour { on optional: a; } } component RequiredOptional { provides IRequiredOptional p; requires IRequiredOptional r; behaviour { on r.a(): { p.a(); } } }