code: function (domObject, toAdd, toRemove) {
              var
                  classNames,
                  lengthBefore,
                  len,
                  idx;
              if (domObject.className) {
                  classNames = domObject.className.split(" ");
              } else {
                  classNames = [];
              }
              lengthBefore = classNames.length;
              // Remove first (faster)
              if (undefined !== toRemove) {
                  if ("string" === typeof toRemove) {
                      toRemove = [toRemove];
                  }
                  _gpfAssert(toRemove instanceof Array, "Expected array");
                  len = toRemove.length;
                  for (idx = 0; idx < len; ++idx) {
                      gpf.clear(classNames, toRemove[idx]);
                  }
              }
              // Then add
              if (undefined !== toAdd) {
                  if ("string" === typeof toAdd) {
                      toAdd = [toAdd];
                  }
                  _gpfAssert(toAdd instanceof Array, "Expected array");
                  len = toAdd.length;
                  for (idx = 0; idx < len; ++idx) {
                      gpf.set(classNames, toAdd[idx]);
                  }
              }
              // Avoid resource consuming refresh if nothing changed
              if (lengthBefore !== classNames.length) {
                  domObject.className = classNames.join(" ");
              }
              return domObject;
          }
docs: Add/Remove the provided class name(s) to the DOM object
  
  @param {Object} domObject
  @param {String|String[]} toAdd
  @param {String|String[]} toRemove
  @gpf:chainable