def METHOD_NAME(tree_file, collected_types=None, type_infos=None):
    "Inspect and collect data from AST tree"
    tree, filename = tree_file
    collected_types = collected_types or {}
    type_infos = type_infos or {}
    if not tree:
        return ['Unable to parse: {}'.format(filename)]
    errors = []
    for node in ast.walk(tree):
        if isinstance(node, ast.ClassDef):
            base_classes, err = get_base_classes(node.bases, filename)
            errors += err
            if base_classes & collected_types['models']:
                collected_types['models'].add(node.name)
                type_infos['models'].append({
                    'name': node.name,
                    'bases': list(base_classes),
                    'file': filename
                })
            if base_classes & collected_types['actors']:
                collected_types['actors'].add(node.name)
                type_infos['actors'].append({
                    'name': node.name,
                    'bases': list(base_classes),
                    'file': filename
                })
            if base_classes & collected_types['tags']:
                collected_types['tags'].add(node.name)
                type_infos['tags'].append({
                    'name': node.name,
                    'bases': list(base_classes),
                    'file': filename
                })
    return errors