EXPECTED = {'ModuleTagsAutomatic': {'extensibility-implied': False,
                         'imports': {},
                         'object-classes': {},
                         'object-sets': {},
                         'tags': 'AUTOMATIC',
                         'types': {'A': {'tag': {'kind': 'IMPLICIT',
                                                 'number': 3},
                                         'type': 'INTEGER'},
                                   'AI': {'tag': {'kind': 'IMPLICIT',
                                                  'number': 3},
                                          'type': 'INTEGER'},
                                   'BA': {'tag': {'kind': 'IMPLICIT',
                                                  'number': 4},
                                          'type': 'A'},
                                   'BIA': {'tag': {'kind': 'IMPLICIT',
                                                   'number': 4},
                                           'type': 'A'},
                                   'BIAI': {'tag': {'kind': 'IMPLICIT',
                                                    'number': 4},
                                            'type': 'AI'},
                                   'C1': {'members': [{'members': [{'name': 'a',
                                                                    'tag': {'kind': 'IMPLICIT',
                                                                            'number': 0},
                                                                    'type': 'INTEGER'}],
                                                       'name': 'a',
                                                       'tag': {'kind': 'EXPLICIT',
                                                               'number': 0},
                                                       'type': 'CHOICE'}],
                                          'type': 'CHOICE'},
                                   'CBA': {'tag': {'kind': 'IMPLICIT',
                                                   'number': 5},
                                           'type': 'BA'},
                                   'CBIAI': {'tag': {'kind': 'IMPLICIT',
                                                     'number': 5},
                                             'type': 'BIAI'},
                                   'CIBIA': {'tag': {'kind': 'IMPLICIT',
                                                     'number': 5},
                                             'type': 'BIA'},
                                   'CIBIAI': {'tag': {'kind': 'IMPLICIT',
                                                      'number': 5},
                                              'type': 'BIAI'},
                                   'S1': {'members': [{'name': 'a',
                                                       'tag': {'kind': 'IMPLICIT',
                                                               'number': 0},
                                                       'type': 'INTEGER'},
                                                      {'name': 'b',
                                                       'optional': True,
                                                       'tag': {'kind': 'IMPLICIT',
                                                               'number': 1},
                                                       'type': 'BOOLEAN'}],
                                          'type': 'SEQUENCE'},
                                   'S2': {'members': [{'name': 'a',
                                                       'type': 'INTEGER'},
                                                      {'name': 'b',
                                                       'tag': {'kind': 'IMPLICIT',
                                                               'number': 2},
                                                       'type': 'S1'},
                                                      {'members': [{'name': 'a',
                                                                    'tag': {'kind': 'IMPLICIT',
                                                                            'number': 0},
                                                                    'type': 'BOOLEAN'}],
                                                       'name': 'c',
                                                       'type': 'CHOICE'}],
                                          'type': 'SEQUENCE'},
                                   'S3': {'members': [{'name': 'a',
                                                       'type': 'INTEGER'},
                                                      {'name': 'b',
                                                       'tag': {'kind': 'IMPLICIT',
                                                               'number': 2},
                                                       'type': 'S1'},
                                                      {'members': [{'name': 'a',
                                                                    'tag': {'kind': 'IMPLICIT',
                                                                            'number': 0},
                                                                    'type': 'BOOLEAN'}],
                                                       'name': 'c',
                                                       'tag': {'kind': 'EXPLICIT',
                                                               'number': 3},
                                                       'type': 'CHOICE'}],
                                          'type': 'SEQUENCE'},
                                   'S4': {'members': [{'name': 'a',
                                                       'type': 'INTEGER'},
                                                      {'name': 'b',
                                                       'tag': {'kind': 'EXPLICIT',
                                                               'number': 1},
                                                       'type': 'C1'},
                                                      {'name': 'c',
                                                       'tag': {'kind': 'IMPLICIT',
                                                               'number': 2},
                                                       'type': 'S1'},
                                                      {'members': [{'name': 'a',
                                                                    'tag': {'kind': 'IMPLICIT',
                                                                            'number': 0},
                                                                    'type': 'BOOLEAN'}],
                                                       'name': 'd',
                                                       'type': 'CHOICE'}],
                                          'type': 'SEQUENCE'},
                                   'S5': {'members': [{'name': 'a',
                                                       'tag': {'kind': 'IMPLICIT',
                                                               'number': 0},
                                                       'type': 'INTEGER'},
                                                      {'name': 'b',
                                                       'tag': {'kind': 'IMPLICIT',
                                                               'number': 1},
                                                       'type': 'S1'},
                                                      {'members': [{'name': 'a',
                                                                    'tag': {'kind': 'IMPLICIT',
                                                                            'number': 0},
                                                                    'type': 'BOOLEAN'}],
                                                       'name': 'c',
                                                       'tag': {'kind': 'EXPLICIT',
                                                               'number': 2},
                                                       'type': 'CHOICE'}],
                                          'type': 'SEQUENCE'},
                                   'S6': {'members': [{'name': 'a',
                                                       'tag': {'kind': 'IMPLICIT',
                                                               'number': 0},
                                                       'type': 'INTEGER'},
                                                      '...',
                                                      {'name': 'b',
                                                       'tag': {'kind': 'IMPLICIT',
                                                               'number': 1},
                                                       'type': 'BOOLEAN'}],
                                          'type': 'SEQUENCE'},
                                   'S7': {'members': [{'name': 'a',
                                                       'tag': {'kind': 'IMPLICIT',
                                                               'number': 2},
                                                       'type': 'INTEGER'},
                                                      '...',
                                                      {'name': 'b',
                                                       'type': 'BOOLEAN'}],
                                          'type': 'SEQUENCE'},
                                   'S8': {'members': [{'element': {'members': [{'name': 'a',
                                                                                'tag': {'kind': 'IMPLICIT',
                                                                                        'number': 0},
                                                                                'type': 'INTEGER'},
                                                                               {'name': 'b',
                                                                                'tag': {'kind': 'IMPLICIT',
                                                                                        'number': 1},
                                                                                'type': 'BOOLEAN'}],
                                                                   'type': 'CHOICE'},
                                                       'name': 'a',
                                                       'tag': {'kind': 'IMPLICIT',
                                                               'number': 0},
                                                       'type': 'SEQUENCE OF'}],
                                          'type': 'SEQUENCE'},
                                   'S9': {'members': [{'element': {'members': [{'name': 'a',
                                                                                'tag': {'kind': 'IMPLICIT',
                                                                                        'number': 0},
                                                                                'type': 'INTEGER'},
                                                                               {'name': 'b',
                                                                                'tag': {'kind': 'IMPLICIT',
                                                                                        'number': 1},
                                                                                'type': 'BOOLEAN'}],
                                                                   'type': 'CHOICE'},
                                                       'name': 'a',
                                                       'tag': {'kind': 'IMPLICIT',
                                                               'number': 0},
                                                       'type': 'SET OF'}],
                                          'type': 'SET'}},
                         'values': {}}}
