def METHOD_NAME(data, definition, timezone=pytz.utc):
    """
    Return a low-level definition of a table, given a data object and
    a high-level declarative definition of the table rows and value
    calculations.
    :param definition: dict with keys:
       "layout": list of rows to display. Each row must be a list of `DisplayConfig` classes
            that represent the cells of the row.
    """
    rows = [
        [get_display_data(data, prop, timezone=timezone) for prop in row]
        for row in definition['layout']
    ]
    max_row_len = max(list(map(len, rows))) if rows else 0
    for row in rows:
        if len(row) < max_row_len:
            row.append({
                "colspan": 2 * (max_row_len - len(row))
            })
    return rows