     case LaunchImage
     
 }
-
 
 struct Asset {
     let attributes: AssetAttribute

    // MARK: - Properties
    
    var enclosingSet: Path {
        get {
            switch type {
            case .Image: return stripKeywords(path) + ".imageset"
            case .Icon: return "AppIcon.appiconset"
            case .LaunchImage: return "LaunchImage.launchimage"
            }
        }
    }
    
    typealias AssetComparator = (SerializedAssetAttribute -> Bool)
    var comparator: AssetComparator {
        get {
            
            let attribute = attributes
            switch type {
            case .Image:
                return { dict in
                    let sameIdiom = dict[SerializedAssetAttributeKeys.Idiom] as String? == attribute.idiom
                    let sameScale = dict[SerializedAssetAttributeKeys.Scale] as String? == attribute.scale
                    return sameIdiom && sameScale
                }
            case .Icon:
                return { dict in
                    let sameIdiom = dict[SerializedAssetAttributeKeys.Idiom] as String? == attribute.idiom
                    let sameScale = dict[SerializedAssetAttributeKeys.Scale] as String? == attribute.scale
                    let sameSize  = dict[SerializedAssetAttributeKeys.Size]  as String? == attribute.size
                    return sameIdiom && sameScale && sameSize
                }
            case .LaunchImage:
                return { dict in
                    let sameIdiom = dict[SerializedAssetAttributeKeys.Idiom] as String? == attribute.idiom
                    let sameScale = dict[SerializedAssetAttributeKeys.Scale] as String? == attribute.scale
                    let sameSubtype = dict[SerializedAssetAttributeKeys.Subtype] as String? == attribute.subtype
                    let sameOrientation = dict[SerializedAssetAttributeKeys.Orientation] as String? == attribute.orientation
                    return sameIdiom && sameScale && sameOrientation && sameSubtype
                }
            }
        }
    }

        self.minimumSystemVersion = minimumSystemVersion
    }
    
    // MARK: - Serializable
    
    typealias Serialized = SerializedAssetAttribute
    var serialized: Serialized {
        var s = [SerializedAssetAttributeKeys.Filename: filename, SerializedAssetAttributeKeys.Scale: scale, SerializedAssetAttributeKeys.Idiom: idiom]
        if let size = size {
            s.updateValue(size, forKey: SerializedAssetAttributeKeys.Size)
        }
        if let extent = extent {
            s.updateValue(extent, forKey: SerializedAssetAttributeKeys.Extent)
        }
        if let subtype = subtype {
            s.updateValue(subtype, forKey: SerializedAssetAttributeKeys.Subtype)
        }
        if let orientation = orientation {
            s.updateValue(orientation, forKey: SerializedAssetAttributeKeys.Orientation)
        }
        if let minimumSystemVersion = minimumSystemVersion {
            s.updateValue(minimumSystemVersion, forKey: SerializedAssetAttributeKeys.MinimumSystemVersion)
        }
        return s
    }
}

