docs: function () {
          /**
           * Cache for the supported CSS styles.
           * @type Object
           * @private
           */
          this._styleCache = {};
  
          /**
           * Cache for properties computed by <em>init</em> for a given user agent.
           * @type Object
           * @private
           */
          this._propertiesCache = {};
  
          ////////////////////////////////////////////////////////////////////////
          // User agent
          ////////////////////////////////////////////////////////////////////////
  
          /**
           * The user agent.
           * @type String
           */
          this.ua = "";
  
  
  
          ////////////////////////////////////////////////////////////////////////
          // Browser
          ////////////////////////////////////////////////////////////////////////
  
          /**
           * Browser name.
           * @type String
           */
          this.name = "";
  
          /**
           * Browser version.
           * @type String
           */
          this.version = "";
  
          /**
           * Browser major version.
           * @type Integer
           */
          this.majorVersion = 0;
  
          /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
          /**
           * <b>Deprecated, use <em>aria.core.Browser.name instead</em>.</b>
           *
           * <p>
           * Browser name.
           * </p>
           *
           * @type String
           * @deprecated use aria.core.Browser.name instead
           */
          this.browserType = "";
  
          /**
           * <b>Deprecated, use <em>aria.core.Browser.version instead</em>.</b>
           *
           * <p>
           * Browser version.
           * </p>
           *
           * @type String
           * @deprecated use aria.core.Browser.version instead
           */
          this.browserVersion = "";
          /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
  
          /**
           * <em>true</em> if the browser is any version of Internet Explorer.
           * @type Boolean
           */
          this.isIE = false;
  
          /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
          /**
           * <b>Deprecated, <em>isIE6</em> is not supported anymore.</b>
           *
           * <em>true</em> if the browser is Internet Explorer 6.
           *
           * @type Boolean
           * @deprecated isIE6 is not supported anymore
           */
          this.isIE6 = false;
          /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
  
          /**
           * <em>true</em> if the browser is Internet Explorer 7.
           * @type Boolean
           */
          this.isIE7 = false;
  
          /**
           * <em>true</em> if the browser is Internet Explorer 8.
           * @type Boolean
           */
          this.isIE8 = false;
  
          /**
           * <em>true</em> if the browser is Internet Explorer 9.
           * @type Boolean
           */
          this.isIE9 = false;
  
          /**
           * <em>true</em> if the browser is Internet Explorer 10.
           * @type Boolean
           */
          this.isIE10 = false;
  
          /**
           * <em>true</em> if the browser is Internet Explorer 11.
           * @type Boolean
           */
          this.isIE11 = false;
  
          /**
           * <em>true</em> if the browser is Internet Explorer 10 or less.
           * @type Boolean
           */
          this.isOldIE = false;
  
          /**
           * <em>true</em> if the browser is Internet Explorer 11 or more.
           * @type Boolean
           */
          this.isModernIE = false;
  
          /**
           * <em>true</em> if the browser is any version of Firefox.
           * Some reference: http://hacks.mozilla.org/2010/09/final-user-agent-string-for-firefox-4/
           * @type Boolean
           */
          this.isFirefox = false;
  
          /**
           * <em>true</em> if the browser is any version of Microsoft Edge.
           * Some reference: https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx#edge
           * @type Boolean
           */
          this.isEdge = false;
  
          /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
          /**
           * <b>Deprecated, use <em>aria.core.Browser.isFirefox instead</em>.</b>
           *
           * <p>
           * <em>true</em> if the browser is any version of Firefox.
           * </p>
           *
           * @type Boolean
           * @deprecated use aria.core.Browser.isFirefox instead
           */
          this.isFF = false;
          /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
  
          /**
           * <em>true</em> if the browser is any version of Chrome.
           * @type Boolean
           */
          this.isChrome = false;
  
          /**
           * <em>true</em> if the browser is any version of Safari.
           * @type Boolean
           */
          this.isSafari = false;
  
          /**
           * <em>true</em> if the browser is any version of Opera.
           * @type Boolean
           */
          this.isOpera = false;
  
          /**
           * <em>true</em> if the browser is any version of BlackBerry.
           * @type Boolean
           */
          this.isBlackBerryBrowser = false;
  
          /**
           * <em>true</em> if the browser is any version of Android.
           * @type Boolean
           */
          this.isAndroidBrowser = false;
  
          /**
           * <em>true</em> if the browser is any version of Safari Mobile.
           * @type Boolean
           */
          this.isSafariMobile = false;
  
          /**
           * <em>true</em> if the browser is any version of IE Mobile.
           * @type Boolean
           */
          this.isIEMobile = false;
  
          /**
           * <em>true</em> if the browser is any version of Opera Mobile.
           * @type Boolean
           */
          this.isOperaMobile = false;
  
          /**
           * <em>true</em> if the browser is any version of Opera Mini.
           * @type Boolean
           */
          this.isOperaMini = false;
  
          /**
           * <em>true</em> if the browser is any version of S60.
           * @type Boolean
           */
          this.isS60 = false;
  
          /**
           * <em>true</em> if the browser is any version of PhantomJS.
           * @type Boolean
           */
          this.isPhantomJS = false;
  
          /**
           * <em>true</em> if browser is not a known one.
           * @type Boolean
           */
          this.isOtherBrowser = false;
  
  
  
          ////////////////////////////////////////////////////////////////////////
          // Rendering engine
          ////////////////////////////////////////////////////////////////////////
  
          /**
           * <em>true</em> if the rendering engine is Webkit.
           * @type Boolean
           */
          this.isWebkit = false;
  
          /**
           * <em>true</em> if the rendering engine is Gecko.
           * @type Boolean
           */
          this.isGecko = false;
  
  
  
          ////////////////////////////////////////////////////////////////////////
          // OS
          ////////////////////////////////////////////////////////////////////////
  
          /**
           * Name of the operating system on which the browser runs.
           * @type String
           */
          this.osName = "";
  
          /**
           * Version of the operating system on which the browser runs.
           * @type String
           */
          this.osVersion = "";
  
          /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
          /**
           * <b>Deprecated, use <em>aria.core.Browser.osName instead</em>.</b>
           *
           * <p>
           * MacOS or Windows.
           * </p>
           *
           * @type String
           * @deprecated use aria.core.Browser.osName instead
           */
          this.environment = "";
          /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
  
          /**
           * <em>true</em> if the operating system is Windows.
           * @type Boolean
           */
          this.isWindows = false;
  
          /**
           * <em>true</em> if the operating system is Mac OS.
           * @type Boolean
           */
          this.isMac = false;
  
          /**
           * <em>true</em> if operating system is iOS.
           * @type Boolean
           */
          this.isIOS = false;
  
          /**
           * <em>true</em> if operating system is Android.
           * @type Boolean
           */
          this.isAndroid = false;
  
          /**
           * <em>true</em> if operating system is Windows.
           * @type Boolean
           */
          this.isWindowsPhone = false;
  
          /**
           * <em>true</em> if operating system is BlackBerry.
           * @type Boolean
           */
          this.isBlackBerry = false;
  
          /**
           * <em>true</em> if operating system is Symbian.
           * @type Boolean
           */
          this.isSymbian = false;
  
          /**
           * <em>true</em> if operating system is not a known one.
           * @type Boolean
           */
          this.isOtherOS = false;
  
          /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
          /**
           * <b>Deprecated, use <em>aria.core.Browser.isOtherOS instead</em>.</b>
           *
           * <p>
           * <em>true</em> if operating system is not a known one.
           * </p>
           *
           * @type Boolean
           * @deprecated use aria.core.Browser.isOtherOS instead
           */
          this.isOtherMobile = false;
          /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
  
  
  
          ////////////////////////////////////////////////////////////////////////
          // Mobile browser specific properties
          //
          // Only for Window Phone with IE+9
          ////////////////////////////////////////////////////////////////////////
  
          // Only for Window Phone with IE+9
          /**
           * <em>true</em> if view type is Mobile.
           * @type Boolean
           */
          this.isMobileView = false;
  
          /**
           * <em>true</em> if view type is Desktop.
           * @type Boolean
           */
          this.isDesktopView = false;
  
          /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
          /**
           * <b>Deprecated, use <em>aria.core.Browser.isDesktopView instead</em>.</b>
           *
           * <p>
           * <em>true</em> if view type is Desktop.
           * </p>
           *
           * @type Boolean
           * @deprecated use aria.core.Browser.isDesktopView instead
           */
          this.DesktopView = false;
          /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
  
  
  
          /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
          ////////////////////////////////////////////////////////////////////////
          // Device properties
          ////////////////////////////////////////////////////////////////////////
  
          // For Mobile Browsers
          /**
           * <b>Deprecated, use <em>aria.utils.Device.isPhone instead</em>.</b>
           *
           * <p>
           * <em>true</em> if the device is of type phone.
           * </p>
           *
           * @type Boolean
           * @deprecated use aria.utils.Device.isPhone instead
           */
          this.isPhone = false;
  
          /**
           * <b>Deprecated, use <em>aria.utils.Device.isTablet instead</em>.</b>
           *
           * <p>
           * <em>true</em> if the device is of type tablet.
           * </p>
           *
           * @type Boolean
           * @deprecated use aria.utils.Device.isTablet instead
           */
          this.isTablet = false;
  
          /**
           * <b>Deprecated, use <em>aria.utils.Device.deviceName instead</em>.</b>
           *
           * <p>
           * Name of the device, combining the vendor and the model.
           * </p>
           *
           * @type String
           * @deprecated use aria.utils.Device.deviceName instead
           */
          this.deviceName = "";
          /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
  
  
  
          ////////////////////////////////////////////////////////////////////////
          // Initialization
          ////////////////////////////////////////////////////////////////////////
  
          /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
          var properties = [
              "isIE6",
              "environment",
              {
                  name: "isFF",
                  synonym: "isFirefox"
              },
              {
                  name: "browserType",
                  synonym: "name"
              },
              {
                  name: "browserVersion",
                  synonym: "version"
              },
  
              {
                  name: "isOtherMobile",
                  synonym: "isOtherOS"
              },
  
              {
                  name: "DesktopView",
                  synonym: "isDesktopView"
              },
  
              {
                  name: "isPhone",
                  alternative: "aria.utils.Device.isPhone"
              },
              {
                  name: "isTablet",
                  alternative: "aria.utils.Device.isTablet"
              },
              {
                  name: "deviceName",
                  alternative: "aria.utils.Device.deviceName"
              },
              {
                  name: "toString",
                  type: "method"
              }
          ];
  
          var deprecatedProperties = [];
          var isString = ariaUtilsType.isString;
          ariaUtilsArray.forEach(properties, function(property) {
              // ------------------------------------------------ property factory
  
              if (isString(property)) {
                  property = {name: property};
              }
  
              // ------------------------------------------------------------ name
  
              var name = property.name;
  
              // ------------------------------------------------------------ type
  
              var type = property.type;
  
              if (type == null) {
                  type = "attribute";
              }
  
              property.type = type;
  
              // ----------------------------------------------- underlying method
  
              if (type == "method") {
                  var underlyingContainer = this;
                  var underlyingName = name;
                  var underlying = underlyingContainer[underlyingName];
  
                  property.underlying = underlying;
              }
  
              // --------------------------------------------------------- synonym
  
              var possibleAlternative;
  
              var synonym = property.synonym;
  
              possibleAlternative = synonym;
  
              // ----------------------------------------------------- alternative
  
              var alternative = property.alternative;
  
              if (alternative == null && possibleAlternative != null) {
                  alternative = possibleAlternative;
              }
  
              property.alternative = alternative;
  
              // --------------------------------------------------- extrapolation
  
              var loggingMessage;
              var loggingMessageArguments = [name];
  
              if (alternative != null) {
                  loggingMessage = type == "attribute" ? "DEPRECATED_REPLACED_PROPERTY" : "DEPRECATED_REPLACED_METHOD";
                  loggingMessageArguments.push(alternative);
              } else {
                  loggingMessage = type == "attribute" ? "DEPRECATED_REMOVED_PROPERTY" : "DEPRECATED_REMOVED_METHOD";
              }
  
              property.loggingMessage = this[loggingMessage];
              property.loggingMessageArguments = loggingMessageArguments;
  
              // ---------------------------------------------------------- result
  
              deprecatedProperties.push(property);
          }, this);
  
          this._deprecatedProperties = deprecatedProperties;
          this.__deprecateProperties();
          /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
  
          this.init();
      }