 
 // MARK: -
 
+/**
+    Decodes a String to an Int.
+*/
 public class StringToIntDecoder: Decoder {
+
+    /**
+        Converts the `String` object to an `Int`.
+
+        - parameter object: The `String` to decode.
+
+        - returns: The decoded `Int` or throws.
+    */
     public func decodeObject(object: AnyObject) throws -> Any {
         if let
             intString = object as? String,


// MARK: -

public class DateDecoder: Decoder {
    private let dateFormatter: NSDateFormatter

    public init(dateFormatString: String) {
        self.dateFormatter = NSDateFormatter()
        self.dateFormatter.dateFormat = dateFormatString
    }

    public init(dateFormatter: NSDateFormatter) {
        self.dateFormatter = dateFormatter
    }

    public func decodeObject(data: AnyObject) throws -> Any {
        if let string = data as? String {
            return try dateFromString(string, withFormatter:self.dateFormatter)


    // MARK: Property Parsing Methods

    /**
        Performs the work of validating and extracting values from the passed in NSData object. The NSData object must
        contain json that can be deserialized by `NSJSONSerialization.JSONObjectWithData`.

        Returns resulting Dictionary object containing all the parsed property results where the property keyPath is 
        the key and the extracted object is the value. The value is guaranteed to be an object of the type defined by 
        the property and can be cast to that type directly, without further checks.

        - parameter data:    An NSData object containing encoded json data.
        - parameter closure: Defines the property list for the parser via the passed in `ParserPropertyMaker` instance.

        - returns: The result Dictionary.
    */
    public class func parseProperties(data data: NSData, closure: ParserPropertyMaker -> Void) throws -> [String: Any] {
        let failureReason: String

