     }
 }
 
-func ==(lhs: ColorDescriptor, rhs: ColorDescriptor) -> Bool {
+public func ==(lhs: ColorDescriptor, rhs: ColorDescriptor) -> Bool {
     return lhs.rawValue == rhs.rawValue
 }

    
    // MARK: Initializers
    
    init(unicodeScalarLiteral value: UnicodeScalarLiteralType) {
        self.init(value)
    }
    
    init(extendedGraphemeClusterLiteral value: ExtendedGraphemeClusterLiteralType) {
        self.init(value)
    }
    
    init(stringLiteral value: StringLiteralType) {
        self.init(value)
    }
    
    init?(rawValue: RawValue) {
        self.init(rawValue)
    }
    


import UIKit

public enum ColorDescriptor {
    case PatternImage(imageName: String)
    case RGB(r: Int, g: Int, b: Int, a: Int)
    case Hex(hex: String)
}

extension ColorDescriptor : StringLiteralConvertible, RawRepresentable, Equatable {
    public typealias RawValue = StringLiteralType
    public typealias ExtendedGraphemeClusterLiteralType = StringLiteralType
    public typealias UnicodeScalarLiteralType = StringLiteralType
    
    public var color: UIColor {
        switch self {
        case let .PatternImage(imageName: imageName):
            let image = UIImage(named: imageName)!
