code: function RegionOfInterest(regionOfInterestDict){
    if(!(this instanceof RegionOfInterest))
      return new RegionOfInterest(regionOfInterestDict)
  
    regionOfInterestDict = regionOfInterestDict || {}
  
    // Check regionOfInterestDict has the required fields
    // 
    // checkType('RelativePoint', 'regionOfInterestDict.points', regionOfInterestDict.points, {isArray: true, required: true});
    //  
    // checkType('RegionOfInterestConfig', 'regionOfInterestDict.regionOfInterestConfig', regionOfInterestDict.regionOfInterestConfig, {required: true});
    //  
    // checkType('String', 'regionOfInterestDict.id', regionOfInterestDict.id, {required: true});
    //  
  
    // Init parent class
    RegionOfInterest.super_.call(this, regionOfInterestDict)
  
    // Set object properties
    Object.defineProperties(this, {
      points: {
        writable: true,
        enumerable: true,
        value: regionOfInterestDict.points
      },
      regionOfInterestConfig: {
        writable: true,
        enumerable: true,
        value: regionOfInterestDict.regionOfInterestConfig
      },
      id: {
        writable: true,
        enumerable: true,
        value: regionOfInterestDict.id
      }
    })
  }
docs: Region of interest for some events in a video processing filter
  
  @constructor module:crowddetector/complexTypes.RegionOfInterest
  
  @property {module:crowddetector/complexTypes.RelativePoint} points
  list of points delimiting the region of interest
  @property {module:crowddetector/complexTypes.RegionOfInterestConfig} regionOfInterestConfig
  data structure for configuration of CrowdDetector regions of interest
  @property {external:String} id
  identifier of the region of interest. The string used for the id must begin
  with a letter followed by an alphanumeric character included (/-_.:+)