Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method Serialize () as owning JSONBuilder 
 | 
{ 
 | 
  Description: 'Write relational content of the `LibOpt_Run` to JSON.' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Convert to fat scopes as thin scopes cannot be deserialized correctly from the closure. 
 | 
    traverse( this, Scope.astype( LibOpt_ScopeThin ), scope ) 
 | 
    { 
 | 
      scope.ConvertToFat(); 
 | 
    } 
 | 
     
 | 
    json := LibOpt_Message::WriteObject( this ); 
 | 
     
 | 
    json_scopes := JSON::Object(); 
 | 
     
 | 
    scope_elements := construct( LibOpt_ScopeElements ); 
 | 
    traverse( this, Scope.astype( LibOpt_ScopeFat ), scope ) 
 | 
    { 
 | 
      scope_elements := scope_elements.Union( scope.ScopeElements() ); 
 | 
      json_scopes.Add( [String] scope.InternalIdentifier(), scope.SerializeScopeElements() ); 
 | 
    } 
 | 
     
 | 
     
 | 
    json.Add( typeof( LibOpt_Scope ).Name(), json_scopes ); 
 | 
    json.Add( attribute( LibOpt_Run, Key ).Name() + this.OptimizerName(), [String]this.Key() ); 
 | 
    json.Add( attribute( LibOpt_Run, InternalIdentifier ).Name() + this.OptimizerName(), [String]this.InternalIdentifier() ); 
 | 
     
 | 
    return &json; 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |