         self.keys = [key]
     }
     
+}
+
+extension KeyPath: StringLiteralConvertible {
     public init(stringLiteral value: String) {
         self.keys = [value]
     }

/// let b: KeyPath = ["a", "b"]
/// let c: KeyPath = "a" => "b" => "c"
/// ```
public struct KeyPath: StringLiteralConvertible, ArrayLiteralConvertible {
    var keys: [String]
    public init(_ keys: [String]) {
        self.keys = keys
    }

    public init(unicodeScalarLiteral value: String) {
        self.keys = [value]
    }
}

extension KeyPath: ArrayLiteralConvertible {
    public init(arrayLiteral elements: String...) {
        self.keys = elements
    }
