PrivatePart( List(A.protected_el, empty_valid=True, list_cls=DeclList))), end_named_block()), protected_decl=SingleProtectedDecl(res("protected"), A.defining_id, A.aspect_spec, "is", Opt("new", A.parent_list, "with"), A.protected_def, sc()), task_item=Or(A.entry_decl, A.aspect_clause, A.pragma), task_def=TaskDef( "is", Opt("new", A.parent_list, "with"), PublicPart(List(A.task_item, empty_valid=True, list_cls=DeclList)), Opt( "private", PrivatePart(List(A.task_item, empty_valid=True, list_cls=DeclList))), end_named_block()), task_type_decl=TaskTypeDecl("task", "type", cut(), A.defining_id, Opt(A.discriminant_part), A.aspect_spec, Opt(A.task_def), sc()), subtype_decl=SubtypeDecl("subtype", A.defining_id, "is", A.subtype_indication, A.aspect_spec, sc()), interface_type_def=InterfaceTypeDef( Opt( Or(InterfaceKind.alt_limited("limited"), InterfaceKind.alt_task("task"), InterfaceKind.alt_protected(res("protected"), ), InterfaceKind.alt_synchronized(res("synchronized"), ))), res("interface"), Opt("and", A.parent_list)), unconstrained_index=UnconstrainedArrayIndex(A.subtype_indication, "range", "<>"), array_type_def=ArrayTypeDef( "array", "(",
task_def=TaskDef( "is", Opt("new", A.parent_list, "with"), PublicPart( List(A.task_item, empty_valid=True, list_cls=DeclList) ), Opt("private", PrivatePart( List(A.task_item, empty_valid=True, list_cls=DeclList) )), end_named_block() ), task_type_decl=TaskTypeDecl( "task", "type", cut(), A.defining_id, Opt(A.discriminant_part), A.aspect_spec, Opt(A.task_def), sc() ), subtype_decl=SubtypeDecl( "subtype", A.defining_id, "is", A.subtype_indication, A.aspect_spec, sc() ), interface_type_def=InterfaceTypeDef( Opt(Or( InterfaceKind.alt_limited("limited"), InterfaceKind.alt_task("task"), InterfaceKind.alt_protected( res("protected"),