def write_attribute(key_name, new_value)
      meta = ensure_metadata_exists(key_name)
      @source.delete(meta.source_key)
      @writethrough[key_name] = @cache[key_name] = new_value
    end
def write_attribute(key_name, new_value)
      meta = ensure_metadata_exists(key_name)
      @source.delete(meta.source_key)
      @writethrough[key_name] = @cache[key_name] = new_value
    end
Update an attribute.
 @param key_name [Symbol] the attribute to update
 @param new_value [Object] the new value
 @return [Object] the written value