 
         return properties[keyPath] as! [T]
     }
+
+    // MARK: Property Parsing Methods
 
     public class func parseProperties(data data: NSData, closure: ParserPropertyMaker -> Void) throws -> [String: Any] {
         let failureReason: String


import Foundation

// MARK: -

public protocol Decodable {
    init(json: AnyObject) throws
}

public protocol Decoder {
    func decodeObject(object: AnyObject) throws -> Any
}

// MARK: -

public enum ParserError: ErrorType, CustomStringConvertible, CustomDebugStringConvertible {
    case Deserialization(failureReason: String)

// MARK: -

public class Parser {

    // MARK: Decodable Parsing Methods

    public class func parseDecodable<T: Decodable>(
        data data: NSData,
        forKeyPath keyPath: String)
