function colDesc(column, source) {
    const a = {
        source,
        name: column.prop || column.name
    };
    a.exists = a.name in source;
    if (a.exists) {
        a.value = source[a.name];
    } else {
        a.value = 'def' in column ? column.def : undefined;
    }
    return a;
}
@method helpers.ColumnSet#prepare
@description
Prepares a source object to be formatted, by cloning it and applying the rules as set by the
columns configuration.

This method is primarily for internal use, that's why it does not validate the input parameters.

@param {object} source
The source object to be prepared, if required.

It must be a non-`null` object, which the method does not validate, as it is
intended primarily for internal use by the library.

@returns {object}
When the object needs to be prepared, the method returns a clone of the source object,
with all properties and values set according to the columns configuration.

When the object does not need to be prepared, the original object is returned.