code: function ServerInfo(serverInfoDict){
    if(!(this instanceof ServerInfo))
      return new ServerInfo(serverInfoDict)
  
    serverInfoDict = serverInfoDict || {}
  
    // Check serverInfoDict has the required fields
    // 
    // checkType('String', 'serverInfoDict.version', serverInfoDict.version, {required: true});
    //  
    // checkType('ModuleInfo', 'serverInfoDict.modules', serverInfoDict.modules, {isArray: true, required: true});
    //  
    // checkType('ServerType', 'serverInfoDict.type', serverInfoDict.type, {required: true});
    //  
    // checkType('String', 'serverInfoDict.capabilities', serverInfoDict.capabilities, {isArray: true, required: true});
    //  
  
    // Init parent class
    ServerInfo.super_.call(this, serverInfoDict)
  
    // Set object properties
    Object.defineProperties(this, {
      version: {
        writable: true,
        enumerable: true,
        value: serverInfoDict.version
      },
      modules: {
        writable: true,
        enumerable: true,
        value: serverInfoDict.modules
      },
      type: {
        writable: true,
        enumerable: true,
        value: serverInfoDict.type
      },
      capabilities: {
        writable: true,
        enumerable: true,
        value: serverInfoDict.capabilities
      }
    })
  }
docs: Description of the mediaserver
  
  @constructor module:core/complexTypes.ServerInfo
  
  @property {external:String} version
  MediaServer version
  @property {module:core/complexTypes.ModuleInfo} modules
  Descriptor of all modules loaded by the server
  @property {module:core/complexTypes.ServerType} type
  Describes the type of mediaserver
  @property {external:String} capabilities
  Describes the capabilities that this server supports