<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def find_breaking_changes( old_schema: GraphQLSchema, new_schema: GraphQLSchema ) -> List[BreakingChange]: """Find breaking changes. Given two schemas, returns a list containing descriptions of all the types of breaking changes covered by the other functions down below. """

    return (
        find_removed_types(old_schema, new_schema)
        + find_types_that_changed_kind(old_schema, new_schema)
        + find_fields_that_changed_type_on_object_or_interface_types(
            old_schema, new_schema
        )
        + find_fields_that_changed_type_on_input_object_types(
            old_schema, new_schema
        ).breaking_changes
        + find_types_removed_from_unions(old_schema, new_schema)
        + find_values_removed_from_enums(old_schema, new_schema)
        + find_arg_changes(old_schema, new_schema).breaking_changes
        + find_interfaces_removed_from_object_types(old_schema, new_schema)
        + find_removed_directives(old_schema, new_schema)
        + find_removed_directive_args(old_schema, new_schema)
        + find_added_non_null_directive_args(old_schema, new_schema)
        + find_removed_directive_locations(old_schema, new_schema)
    )