'Return the list of `column_types` for this dataset or `None` if unavailable.
:param indeces: the indeces for the columns of which to return the types.
Optional: defaults to None (return all types)
:type indeces: list of ints'

def get_metadata_column_types(self, indeces=None):

    metadata_column_types = (self.dataset.metadata.column_types or getattr(self.dataset.datatype, 'column_types', None) or None)
    if (not metadata_column_types):
        return metadata_column_types
    if indeces:
        column_types = []
        for index in indeces:
            column_type = (metadata_column_types[index] if (index < len(metadata_column_types)) else None)
            column_types.append(column_type)
        return column_types
    return metadata_column_types
