class AbstractDynamoDao extends AbstractDao<M,P,K,I> {

    public M updateAndReturn(K id, Update<P> update, Instant updateAt, I updaterId) {
        UpdateItemSpec spec = toUpdateItemSpec(id, update, updateAt, updaterId);
        spec = spec.withReturnValues(ReturnValue.ALL_OLD);
        UpdateItemOutcome outcome = getTable().updateItem(spec);
        Item item = outcome.getItem();
        if (item == null) {
            item = new Item();
        }
        return modelMapper.toObject(item);
    }

    public  AbstractDynamoDao(Class<M> modelClass, Class<P> partialClass, AmazonDynamoDB db, String tableName);
    public  AbstractDynamoDao(Class<M> modelClass, Class<P> partialClass, AmazonDynamoDB db, String tableName, ItemMapper<M> modelMapper, ItemMapper<P> partialMapper);

}