As with other constructed types, the <type> variable can reference any ASN.1 type, including other ASN.1 constructed types. Therefore, it is possible to have a SEQUENCE OF SEQUENCE, SEQUENCE OF CHOICE, etc.
When a constructed type is referenced, a temporary type is generated for use in the final production. The format of this temporary type name is as follows:
<prodName>_element
In this definition, <prodName> refers to the name of the production containing the SEQUENCE OF type.
For example, a simple (and very common) single level nested SEQUENCE OF construct might be as follows:
A ::= SEQUENCE OF SEQUENCE { INTEGER a, BOOLEAN b }
In this case, a temporary type is generated for the element of the SEQUENCE OF construct. This results in the following two equivalent ASN.1 types:
A-element ::= SEQUENCE { INTEGER a, BOOLEAN b } A ::= SEQUENCE OF A-element
These types are then converted into the equivalent Java classes using the standard mapping that was previously described.