     ///
     /// **Note:** Sets the access token's expiration date to
     ///     1 January 1970, GMT.
-    public func invalidateAccessToken() {
+    open func invalidateAccessToken() {
         accessToken = accessToken?.copy(expiresAt: Date(timeIntervalSince1970: 0))
     }
 

    /// - parameter grantType: The grant type URI of the extension grant
    /// - parameter parameters: The required parameters for the external grant
    /// - parameter completion: A callback to invoke when the request completed.
    public func requestAccessToken(grantType: String, parameters: [String: String], completion: @escaping (Result<Void, NSError>) -> ()) {
        requestAccessToken(grant: .extension(grantType, parameters)) { result in
            completion(result.map { _ in return })
        }

    /// - parameter username: The resource owner's username.
    /// - parameter password: The resource owner's password.
    /// - parameter completion: A callback to invoke when the request completed.
    open func requestAccessToken(username: String, password: String, completion: @escaping (Result<Void, NSError>) -> ()) {
        requestAccessToken(grant: .resourceOwnerPasswordCredentials(username, password)) { result in
            completion(result.map { _ in return })
        }
