I'm parsing spec ETSI TS 129 002 (3GPP TS 29.002) which contains a class definition for application context:
APPLICATION-CONTEXT ::= CLASS {
&Symmetric OPERATION-PACKAGE OPTIONAL,
&InitiatorConsumerOf OPERATION-PACKAGE OPTIONAL,
&ResponderConsumerOf OPERATION-PACKAGE OPTIONAL,
&code OBJECT IDENTIFIER }
WITH SYNTAX {
[ OPERATIONS OF &Symmetric ]
[ INITIATOR CONSUMER OF &InitiatorConsumerOf
RESPONDER CONSUMER OF &ResponderConsumerOf ]
ID &code }
In the same spec there are instantiations of this class like
resetContext-v3 APPLICATION-CONTEXT ::= {
-- Responder is VLR or SGSN if Initiator is HLR or CSS
INITIATOR CONSUMER OF {
resetPackage-v3}
ID {map-ac reset(10) version3(3)} }
To my understanding the class has two optional groups (OPERATIONS and INITIATOR...RESPONDER) and a required one (ID). A optional group itself consists of required tokens. Seeing it that way the instantiation of the class would be invalid as the RESPONDER part is missing. Both of the snippets are taken from the same spec so I assume they are not supposed to be invalid.
An additional statement in X.680 states that the appearance of the first token of an optional group makes the group present. In this case the token INITIATOR would mark that group present. But then the required token RESPONDER would be missing.
What is the proper interpretation of the optional group in this context?