code: function EndpointStats(endpointStatsDict){
    if(!(this instanceof EndpointStats))
      return new EndpointStats(endpointStatsDict)
  
    endpointStatsDict = endpointStatsDict || {}
  
    // Check endpointStatsDict has the required fields
    // 
    // checkType('double', 'endpointStatsDict.audioE2ELatency', endpointStatsDict.audioE2ELatency, {required: true});
    //  
    // checkType('double', 'endpointStatsDict.videoE2ELatency', endpointStatsDict.videoE2ELatency, {required: true});
    //  
    // checkType('MediaLatencyStat', 'endpointStatsDict.E2ELatency', endpointStatsDict.E2ELatency, {isArray: true, required: true});
    //  
  
    // Init parent class
    EndpointStats.super_.call(this, endpointStatsDict)
  
    // Set object properties
    Object.defineProperties(this, {
      audioE2ELatency: {
        writable: true,
        enumerable: true,
        value: endpointStatsDict.audioE2ELatency
      },
      videoE2ELatency: {
        writable: true,
        enumerable: true,
        value: endpointStatsDict.videoE2ELatency
      },
      E2ELatency: {
        writable: true,
        enumerable: true,
        value: endpointStatsDict.E2ELatency
      }
    })
  }
docs: A dictionary that represents the stats gathered in the endpoint element.
  
  @constructor module:core/complexTypes.EndpointStats
  
  @property {external:double} audioE2ELatency
  @deprecated
  End-to-end audio latency measured in nano seconds
  @property {external:double} videoE2ELatency
  @deprecated
  End-to-end video latency measured in nano seconds
  @property {module:core/complexTypes.MediaLatencyStat} E2ELatency
  The average end to end latency for each media stream measured in nano
  seconds
  
  @extends module:core.ElementStats