     }.joined(separator: "\n"))
     return true
 }
-
-// Mark - == Implementation
-
-public func == (lhs: Configuration, rhs: Configuration) -> Bool {
-    return (lhs.excluded == rhs.excluded) &&
-           (lhs.included == rhs.included) &&
-           (lhs.reporter == rhs.reporter) &&
-           (lhs.configurationPath == rhs.configurationPath) &&
-           (lhs.rootPath == lhs.rootPath) &&
-           (lhs.rules == rhs.rules)
-}

        self.init(enableAllRules: enableAllRules, cachePath: cachePath)!
        setCached(atPath: fullPath)
    }
}

// MARK: Identifier Validation

import SourceKittenFramework

public struct Configuration: Equatable {

    // MARK: Properties

    public static let fileName = ".swiftlint.yml"

    public let included: [String]         // included
    public let excluded: [String]         // excluded
    public let reporter: String           // reporter (xcode, json, csv, checkstyle)
    public var warningThreshold: Int?     // warning threshold
    public var rootPath: String?          // the root path to search for nested configurations
    public var configurationPath: String? // if successfully loaded from a path
    public let cachePath: String?

    // All rules enabled in this configuration, derived from disabled, opt-in and whitelist rules
    public let rules: [Rule]

    // MARK: Initializers

    public init?(disabledRules: [String] = [],
                 optInRules: [String] = [],
