text: Set DEFINITIONS IMPLICIT TAGS ::= 
  
  BEGIN
  
  IMPORTS Seq1 FROM SeqSetLib;
  
  Set ::=  SET 
  {
    bool  BOOLEAN,
    boolCon [20] BOOLEAN,
    boolPri [PRIVATE 21] BOOLEAN,
    boolApp  [APPLICATION 22] BOOLEAN,
    boolExpCon [30] EXPLICIT BOOLEAN,
    boolExpPri [PRIVATE 31] EXPLICIT BOOLEAN,
    boolExpApp  [APPLICATION 32] EXPLICIT BOOLEAN
  }
  
  Set1 ::= SET 
  {
    bool1  BOOLEAN,
    int1  INTEGER,
    set1  SetIn
  }
  
  Set2 ::= SET 
  {
    set2  SetIn,
    bool2  BOOLEAN,
    int2  INTEGER
  }
  
  Set3 ::= SET 
  {
    bool3  BOOLEAN,
    set3  SetIn,
    int3  INTEGER
  }
  
  SetDef1 ::= SET 
  {
    bool1  BOOLEAN DEFAULT TRUE,
    int1  INTEGER,
    set1  SetIn DEFAULT {}
  }
  
  SetDef2 ::= SET 
  {
    set2  SetIn DEFAULT {},
    bool2  BOOLEAN,
    int2  INTEGER
  }
  
  SetDef3 ::= SET 
  {
    bool3  BOOLEAN DEFAULT TRUE,
    set3  SetIn DEFAULT {},
    int3  INTEGER DEFAULT 17
  }
  
  SetOpt1 ::= SET 
  {
    bool1  BOOLEAN OPTIONAL,
    int1  INTEGER,
    set1  SetIn OPTIONAL
  }
  
  SetOpt2 ::= SET 
  {
    set2  SetIn OPTIONAL,
    bool2  BOOLEAN,
    int2  INTEGER
  }
  
  SetOpt3 ::= SET 
  {
    bool3  BOOLEAN OPTIONAL,
    set3  SetIn OPTIONAL,
    int3  INTEGER OPTIONAL
  }
  
  SetIn ::= SET 
  {
    boolIn  BOOLEAN,
    intIn  INTEGER
  }
  
  
  SetS1 ::= SET 
  {
    boolS1  BOOLEAN,
    intS1  INTEGER,
    setS1  SET { boolIn BOOLEAN,
                 intIn  INTEGER }
  }
  
  SetS2 ::= SET 
  {
    setS2  SET { boolIn BOOLEAN,
                 intIn  INTEGER },
    boolS2  BOOLEAN,
    intS2  INTEGER
  
  }
  
  SetS3 ::= SET 
  {
    boolS3  BOOLEAN,
    setS3  SET { boolIn BOOLEAN,
                 intIn  INTEGER },
    intS3  INTEGER
  
  }
  
  
  SetImp1 ::= SET 
  {
    seq  Seq1,
    bool  BOOLEAN,
    int  INTEGER
  }
  
  
  SetImp2 ::= SET 
  {
    bool  BOOLEAN,
    seq  Seq1,
    int  INTEGER
  }
  
  
  SetImp3 ::= SET 
  {
    bool  BOOLEAN,
    int  INTEGER,
    seq  Seq1
  }
  
  
  
  
  END
  