context: 
  //
  // This file was generated by the BinaryNotes compiler.
  // See http://bnotes.sourceforge.net 
  // Any modifications to this file will be lost upon recompilation of the source ASN.1. 
  //
  
  using System;
  using org.bn.attributes;
  using org.bn.attributes.constraints;
  using org.bn.coders;
  using org.bn.types;
  using org.bn;
  
  namespace MMS_ASN1_Model {
  
  
      [ASN1PreparedElement]
      [ASN1Sequence ( Name = "Program_Invocation_instance", IsSet = false  )]
      public class Program_Invocation_instance : IASN1PreparedElement {
                      
  	private Identifier name_ ;
  	
          [ASN1Element ( Name = "name", IsOptional =  false , HasTag =  true, Tag = 0 , HasDefaultValue =  false )  ]
      
          public Identifier Name
          {
              get { return name_; }
              set { name_ = value;  }
          }
          
                  
            
  	private DefinitionChoiceType definition_ ;
  	
  
      [ASN1PreparedElement]    
      [ASN1Choice ( Name = "definition" )]
      public class DefinitionChoiceType : IASN1PreparedElement  {
  	            
          
  	private ObjectIdentifier reference_ ;
          private bool  reference_selected = false ;
          
                  
          [ASN1ObjectIdentifier( Name = "" )]
      
          [ASN1Element ( Name = "reference", IsOptional =  false , HasTag =  true, Tag = 1 , HasDefaultValue =  false )  ]
      
          public ObjectIdentifier Reference
          {
              get { return reference_; }
              set { selectReference(value); }
          }
          
                  
            
          
  	private DetailsSequenceType details_ ;
          private bool  details_selected = false ;
          
                  
          
         [ASN1PreparedElement]
         [ASN1Sequence ( Name = "details", IsSet = false  )]
         public class DetailsSequenceType : IASN1PreparedElement {
                          
  	private ProgramInvocationState programInvocationState_ ;
  	
          [ASN1Element ( Name = "programInvocationState", IsOptional =  false , HasTag =  true, Tag = 3 , HasDefaultValue =  false )  ]
      
          public ProgramInvocationState ProgramInvocationState
          {
              get { return programInvocationState_; }
              set { programInvocationState_ = value;  }
          }
          
                  
            
  	private System.Collections.Generic.ICollection<Domain_instance> domains_ ;
  	
  [ASN1SequenceOf( Name = "domains", IsSetOf = false  )]
  
      
          [ASN1Element ( Name = "domains", IsOptional =  false , HasTag =  true, Tag = 4 , HasDefaultValue =  false )  ]
      
          public System.Collections.Generic.ICollection<Domain_instance> Domains
          {
              get { return domains_; }
              set { domains_ = value;  }
          }
          
                  
            
  	private System.Collections.Generic.ICollection<Access_Control_List_instance> accessControl_ ;
  	
  [ASN1SequenceOf( Name = "accessControl", IsSetOf = false  )]
  
      
          [ASN1Element ( Name = "accessControl", IsOptional =  false , HasTag =  true, Tag = 5 , HasDefaultValue =  false )  ]
      
          public System.Collections.Generic.ICollection<Access_Control_List_instance> AccessControl
          {
              get { return accessControl_; }
              set { accessControl_ = value;  }
          }
          
                  
            
  	private bool reusable_ ;
  	[ASN1Boolean( Name = "" )]
      
          [ASN1Element ( Name = "reusable", IsOptional =  false , HasTag =  true, Tag = 6 , HasDefaultValue =  false )  ]
      
          public bool Reusable
          {
              get { return reusable_; }
              set { reusable_ = value;  }
          }
          
                  
            
  	private bool monitor_ ;
  	[ASN1Boolean( Name = "" )]
      
          [ASN1Element ( Name = "monitor", IsOptional =  false , HasTag =  true, Tag = 7 , HasDefaultValue =  false )  ]
      
          public bool Monitor
          {
              get { return monitor_; }
              set { monitor_ = value;  }
          }
          
                  
            
  	private System.Collections.Generic.ICollection<Event_Condition_instance> eventCondition_ ;
  	
          private bool  eventCondition_present = false ;
  	
  [ASN1SequenceOf( Name = "eventCondition", IsSetOf = false  )]
  
      
          [ASN1Element ( Name = "eventCondition", IsOptional =  true , HasTag =  true, Tag = 8 , HasDefaultValue =  false )  ]
      
          public System.Collections.Generic.ICollection<Event_Condition_instance> EventCondition
          {
              get { return eventCondition_; }
              set { eventCondition_ = value; eventCondition_present = true;  }
          }
          
                  
            
  	private System.Collections.Generic.ICollection<Event_Action_instance> eventAction_ ;
  	
          private bool  eventAction_present = false ;
  	
  [ASN1SequenceOf( Name = "eventAction", IsSetOf = false  )]
  
      
          [ASN1Element ( Name = "eventAction", IsOptional =  true , HasTag =  true, Tag = 9 , HasDefaultValue =  false )  ]
      
          public System.Collections.Generic.ICollection<Event_Action_instance> EventAction
          {
              get { return eventAction_; }
              set { eventAction_ = value; eventAction_present = true;  }
          }
          
                  
            
  	private System.Collections.Generic.ICollection<Event_Enrollment_instance> eventEnrollment_ ;
  	
          private bool  eventEnrollment_present = false ;
  	
  [ASN1SequenceOf( Name = "eventEnrollment", IsSetOf = false  )]
  
      
          [ASN1Element ( Name = "eventEnrollment", IsOptional =  true , HasTag =  true, Tag = 10 , HasDefaultValue =  false )  ]
      
          public System.Collections.Generic.ICollection<Event_Enrollment_instance> EventEnrollment
          {
              get { return eventEnrollment_; }
              set { eventEnrollment_ = value; eventEnrollment_present = true;  }
          }
          
                  
            
  	private MMSString executionArgument_ ;
  	
          [ASN1Element ( Name = "executionArgument", IsOptional =  false , HasTag =  true, Tag = 11 , HasDefaultValue =  false )  ]
      
          public MMSString ExecutionArgument
          {
              get { return executionArgument_; }
              set { executionArgument_ = value;  }
          }
          
                  
            
  	private Control_State control_ ;
  	
          [ASN1Element ( Name = "control", IsOptional =  false , HasTag =  true, Tag = 12 , HasDefaultValue =  false )  ]
      
          public Control_State Control
          {
              get { return control_; }
              set { control_ = value;  }
          }
          
                  
            
  	private Program_Invocation_instance controlling_Program_Invocation_ ;
  	
          [ASN1Element ( Name = "controlling-Program-Invocation", IsOptional =  false , HasTag =  true, Tag = 13 , HasDefaultValue =  false )  ]
      
          public Program_Invocation_instance Controlling_Program_Invocation
          {
              get { return controlling_Program_Invocation_; }
  
gt:             set { controlling_Program_Invocation_ = value;  }