class PaymentMethodDatabaseAdapter implements DatabaseAdapter<PaymentMethod> {

    @NonNull
    @Override
    public ContentValues write(@NonNull PaymentMethod paymentMethod, @NonNull DatabaseOperationMetadata databaseOperationMetadata) {
        final ContentValues values = new ContentValues();
        values.put(PaymentMethodsTable.COLUMN_METHOD, paymentMethod.getMethod());
        values.put(PaymentMethodsTable.COLUMN_CUSTOM_ORDER_ID, paymentMethod.getCustomOrderId());
        values.put(PaymentMethodsTable.COLUMN_UUID, paymentMethod.getUuid().toString());
        values.put(PaymentMethodsTable.COLUMN_REIMBURSABLE, paymentMethod.isReimbursable());
        if (databaseOperationMetadata.getOperationFamilyType() == OperationFamilyType.Sync) {
            values.putAll(mSyncStateAdapter.write(paymentMethod.getSyncState()));
        } else {
            values.putAll(mSyncStateAdapter.writeUnsynced(paymentMethod.getSyncState()));
        }
        return values;
    }

    public  PaymentMethodDatabaseAdapter();
    public  PaymentMethodDatabaseAdapter(@NonNull SyncStateAdapter syncStateAdapter);

}