abstract Object_Impl extends Base { [[Object Impl @since 1.66]] methods { @property a @beta { set { values { value: const(list); } return: bool (false); } get { } keys { part: string; } values { value: list @move; } } @property b { set { } get @pure_virtual { /* set as virtual pure - no implementation expected */ } values { value: iterator @move; } } constructor_1 { params { @in a: int; @in b: char; } } constructor_2 { } foo1 { [[comment foo]] params { @in a: int; [[a]] @inout b: char; @out c: double; } return: mstring (null); [[comment for method return]] } foo2 @const { [[comment foo]] params { @in a: int; @in b: string; } } pure_foo3 @pure_virtual { /* set as virtual pure - no implementation expected */ } } implements { class.constructor; class.destructor; Base.constructor; Base.destructor; } constructors { .constructor_1; .constructor_2; } }