code: function Detector() {
        var _this;
  
        var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
        var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
        var cssFlags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
        var cssFlagsPrefix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'djs';
  
        _classCallCheck(this, Detector);
  
        _this = _possibleConstructorReturn(this, _getPrototypeOf(Detector).call(this, ua));
        _this._values = values;
        _this._cssFlags = !!cssFlags ? [] : null;
        _this._cssFlagsPrefix = cssFlagsPrefix + (!!cssFlagsPrefix ? '--' : ''); //! Features
  
        _this.checkFeature(); //! Software
  
  
        _this.checkEngine();
  
        _this.checkBrowser();
  
        _this.checkOS(); //! Hardware
        // this.checkDevice();
  
  
        _this.checkCPU();
  
        _this.checkGPU();
  
        _this.checkPlatform();
  
        _this.setCssFlags(); // remove unnecessary memory usage
  
  
        delete _this._booleanFlagsValuePropertyName;
        delete _this._values;
        delete _this._cssFlags;
        delete _this._cssFlagsPrefix;
        delete _this._root;
        delete _this._process;
        delete _this._navigator;
        delete _this._document;
        delete _this._ua;
        console.warn('DetectorJS initialized', _this.toFlags());
        return _this;
      }
docs: Creates an instance of Detector.
  @param {boolean} [cssFlags=false]
  @param {string} [cssFlagsPrefix='djs']
  @param {any} [ua=null]
  
  @memberOf Detector