ModuleTestXERDecoding { iso org(3) dod(6) internet(1) private(4) enterprise(1)
	spelio(9363) software(1) asn1c(5) test(1) 70 }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN

PDU ::= CHOICE {
    sequence	 [0] IMPLICIT Sequence,
    set	 [1] IMPLICIT Set,
    setOf	 [2] IMPLICIT SetOf,
    sequenceOf	 [3] IMPLICIT SequenceOf,
    extensibleSet	 [4] IMPLICIT ExtensibleSet,
    extensibleSequence	 [5] IMPLICIT ExtensibleSequence,
    setOfNULL	 [6] IMPLICIT SetOfNULL,
    setOfEnums	 [7] IMPLICIT SetOfEnums,
    seqOfZuka	 [8] IMPLICIT SeqOfZuka,
    ...
}

Sequence ::= SEQUENCE {
    integer	 [0] IMPLICIT INTEGER,
    sequence	 [1] IMPLICIT Sequence OPTIONAL,
    bits	 [2] IMPLICIT BIT STRING OPTIONAL,
    string	 [3] IMPLICIT UTF8String
}

Set ::= SET {
    roid	 [0] IMPLICIT RELATIVE-OID,
    opaque	 [1] IMPLICIT OCTET STRING OPTIONAL
}

ExtensibleSet ::= SET {
    string	 [0] IMPLICIT UTF8String OPTIONAL,
    ...,
    enum	 [1] IMPLICIT ENUMERATED {
        b(0),    
        a(1)
    }
}

ExtensibleSequence ::= SEQUENCE {
    string	 [0] IMPLICIT UTF8String OPTIONAL,
    ...,
    integer	 [1] IMPLICIT INTEGER OPTIONAL
}

SetOf ::= SET OF REAL

SetOfNULL ::= SET OF NULL

SetOfEnums ::= SET OF ENUMERATED {
        one(0),    
        oneMore(1)
    }

SequenceOf ::= SEQUENCE OF    id	 INTEGER {
        one(1),    
        two(2)
    }

SeqOfZuka ::= SEQUENCE OF    zuka	 NULL

END
