code: function genericPropertyGet(fn, object, fallbackPropertyName, fallbackTest) {
    if (fn) {
      return fn.apply(object);
    }
    var propertyValue = object[fallbackPropertyName];
    if (!fallbackTest(propertyValue)) {
      throw new Error('Clobbering detected');
    }
    return propertyValue;
  }
docs: Calls the provided DOM property descriptor and returns its result. If the
  descriptor is not available, use fallbackPropertyName to get the property
  value in a clobber-vulnerable way, and use fallbackTest to check if the
  property was clobbered, throwing an exception if so.
  @param {?Function} fn
  @param {*} object
  @param {string} fallbackPropertyName
  @param {function(*):boolean} fallbackTest
  @return {?}