code: function AuthenticationContext(authority, validateAuthority, cache) {
    var validate = (validateAuthority === undefined || validateAuthority === null || validateAuthority);
  
    this._authority = new Authority(authority, validate);
    this._oauth2client = null;
    this._correlationId = null;
    this._callContext = { options : globalADALOptions };
    this._cache = cache || globalCache;
    this._tokenRequestWithUserCode = {};
  }
docs: This is an interface that can be implemented to provide custom token cache persistence.
  @public
  @class TokenCache
  @property {ModifyCacheFunction}  add Called by ADAL when entries should be added to the cache.
  @property {ModifyCacheFunction}  remove Called by ADAL when entries should be removed from the cache.
  @property {FindCacheFunction}    find Called when ADAL needs to find entries in the cache.
   
  Creates a new AuthenticationContext object.  By default the authority will be checked against
  a list of known Azure Active Directory authorities.  If the authority is not recognized as
  one of these well known authorities then token acquisition will fail.  This behavior can be
  turned off via the validateAuthority parameter below.
  @constructor
  @param {string}  authority            A URL that identifies a token authority.
  @param {bool}   [validateAuthority]   Turns authority validation on or off.  This parameter default to true.
  @param {TokenCache}   [cache]         Sets the token cache used by this AuthenticationContext instance.  If this parameter is not set
  then a default, in memory cache is used.  The default in memory cache is global to the process and is
  shared by all AuthenticationContexts that are created with an empty cache parameter.  To control the
  scope and lifetime of a cache you can either create a {@link MemoryCache} instance and pass it when
  constructing an AuthenticationContext or implement a custom {@link TokenCache} and pass that.  Cache
  instances passed at AuthenticationContext construction time are only used by that instance of
  the AuthenticationContext and are not shared unless it has been manually passed during the
  construction of other AuthenticationContexts.