 	
 	fileprivate var attributes: RecordAttributes
 	fileprivate var container: KeyedDecodingContainer<SObjectCodingKey>
+	fileprivate var mutableFields = [String: Any?]()
 
 	/// Record ID
 	public var id: String {

	/// - Parameter named: name of the field containing the query result.
	/// - Returns: QueryResult<SObject> containing the subquery results decoded as SObjects
	public func subqueryResult(named: String) throws -> QueryResult<SObject>? {
		return try container.decodeIfPresent(QueryResult.self, forKey: SObjectCodingKey(stringValue: named)!)
	}
}


	/// - Returns: value retrieved for the given field, or nil if the value is nil or not present.
	/// - Throws: Decoding error if the value cannot be decoded as type 'T'
	public func value<T: Decodable>(named: String) throws -> T? {
		return try getValue(named: named, asType: T.self)
	}
	
	/// Gets the value of a field as a String
	public func string(named: String) throws -> String? {
		return try getValue(named: named, asType: String.self)
	}
	
	/// Gets the value of a field as a Date
	public func date(named: String) throws -> Date? {
		return try getValue(named: named, asType: Date.self)
	}
	
	/// Gets the value of a field as a URL
	public func url(named: String) throws -> URL? {
		return try getValue(named: named, asType: URL.self)
	}
	
	/// Gets the value of a field as an unsigned integer
	public func uint(named: String) throws -> UInt? {
		return try getValue(named: named, asType: UInt.self)
	}
	
	/// Gets the value of a field as an Address
	public func address(named: String) throws -> Address? {
		return try getValue(named: named, asType: Address.self)
	}
	
	/// Returns a subquery result. For example, the records returned by the query
