struct Generic.Event { field1: int; field2: list; } class Generic extends Efl.Object implements Generic_Interface { data: Generic_Data; methods { @property req_ctor_a_value { get { } values { value: int; } } @property opt_ctor_a_value { get { } values { value: int; } } required_ctor_a { params { @in value: int; } } required_ctor_b { params { @in value: int; } } optional_ctor_a { params { @in value: int; } } optional_ctor_b { params { @in value: int; } } @property req_ctor_b_value { get {} values { value: int; } } @property opt_ctor_b_value { get {} values { value: int; } } out_required_ctor_a { params { @out value: int; } } out_required_ctor_b { params { @out value: int; } } out_optional_ctor_a { params { @out value: int; } } out_optional_ctor_b { params { @out value: int; } } call_event1 { } call_event2 { } call_event3 { } call_event4 { } call_event5 { } protected_method1 @protected { } beta_method1 @beta { } protected_beta_method1 @protected @beta { } event_param { params { value: event; } } const_event_param { params { value: const(event); } } binbuf_param { params { value: binbuf; } } const_binbuf_param { params { value: const(binbuf); } } } constructors { .required_ctor_a; .required_ctor_b; .optional_ctor_a @optional; .optional_ctor_b @optional; } implements { Efl.Object.constructor; } events { prefix,event1: void; prefix,event2: Generic; prefix,event3: int; prefix,event4: const(array); prefix,event5: Generic.Event; protected,event1 @protected: void; beta,event1 @beta: void; protected,beta,event1 @beta @protected: void; } }