All feature names for a feature: usually just the feature itself,
    but can be several features for unhashed features with collisions.

def _all_feature_names(name):
    # type: (Union[str, bytes, List[Dict]]) -> List[str]
    """ All feature names for a feature: usually just the feature itself,
    but can be several features for unhashed features with collisions.
    """
    if isinstance(name, bytes):
        return [name.decode('utf8')]
    elif isinstance(name, list):
        return [x['name'] for x in name]
    else:
        return [name]