         }
     }
     
+    /// Attempts to read this subscript access as an array value, throwing an
+    /// error if the keypath is invalid, or if the value is not an array.
     public func array() throws -> [JSON] {
         switch self {
         case .value(let v):

        }
    }
    
    public func string() throws -> String {
        switch self {
        case .value(let v):

            return nil
        }
    }
    
    /// Returns an integer for this `JSON` in case it is a number that is losslesly
    /// convertible to `Int`, `nil` otherwise.
    var int: Int? {
        switch self {
        case .number(let number):
