         self.accessToken = accessToken
     }
     
+    /// Returns a Boolean value indicating whether two values are equal.
+    ///
+    /// Equality is the inverse of inequality. For any values `a` and `b`,
+    /// `a == b` implies that `a != b` is `false`.
+    ///
+    /// - Parameters:
+    ///   - lhs: A value to compare.
+    ///   - rhs: Another value to compare.
     public static func ==(lhs: User, rhs: User) -> Bool {
         return lhs.userId == rhs.userId &&
             lhs.accessToken == rhs.accessToken

        self.request = request
    }
    
    public static func ==(lhs: LaunchRequest, rhs: LaunchRequest) -> Bool {
        return lhs.request == rhs.request
    }

import Foundation

/// Provides additional context associated with a request that is maintained
/// between request invocations.
///
/// Session attributes will survive individual request invocations if attributes
/// are passed back in the response as `sessionAttributes` (see 
/// `ResponseGenerator`) and the `shouldEndSession` flag is set to `false` (see
/// `StandardResponse`).
///
/// The information in `user` and `application` properties is the same as in the
/// `Context` type.
///
/// - SeeAlso: `StandardResponse.shouldEndSession`, `ResponseGenerator`
public struct Session: Equatable {
    /// A Bool value that indicates whether this session was created from
    /// scratch for this request.
    public var isNew: Bool
    /// Unique identifier for a session.
    public var sessionId: String
    /// Application information.
    public var application: Application
    /// Session attributes.
    public var attributes: [String: Any]
    /// User information.
    public var user: User
    
    /// Creates a new session with initial values.
    ///
    /// - Parameters:
    ///   - isNew: A Bool value that indicates whether this session was created from
    ///            scratch for this request.
    ///   - sessionId: Unique identifier for a session.
    ///   - application: Application information.
    ///   - attributes: Session attributes.
    ///   - user: User information.
    public init(isNew: Bool, sessionId: String, application: Application, attributes: [String: Any], user: User) {
        self.isNew = isNew
        self.sessionId = sessionId
