         return lhs.id != nil && lhs.id == rhs.id
     }
 }
-
-/// Default JSONRepresentable method
-public extension JSONRepresentable {
-    func toJSON() -> JSON {
-        var json = JSON()
-        
-        for case let (label?, value) in Mirror(reflecting: self).children {
-            if let value = value as? JSONRepresentable {
-                json[label] = value.toJSON()
-            } else if let value = value as? NSObject {
-                json[label] = value
-            }
-        }
-        
-        return json
-    }
-}

    return lhs.value == rhs.value
}

/// Record
/// This protocol outline requirements for
/// a type that can be managed by the `Store`

    /// A unique identifier for a `Self`
    var id: ID? { get }
    /// The type class to be used to make network request
    /// for `Self`. Default value is the `RESTAdapter`.
    static var adapterType: Adapter.Type { get }
    /// The type class to be used to serializer and normalize
    /// `Self`. Default value is the `JSONSerializer`.
