<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def expose_ideal_query_execution_start_points(compound_match_query, location_types, coerced_locations):
 """Ensure that OrientDB only considers desirable query start points in query planning."""

    new_queries = []

    for match_query in compound_match_query.match_queries:
        location_classification = _classify_query_locations(match_query)
        preferred_locations, eligible_locations, _ = location_classification

        if preferred_locations:
            # Convert all eligible locations into non-eligible ones, by removing
            # their "class:" clause. The "class:" clause is provided either by having
            # a QueryRoot block or a CoerceType block in the MatchStep corresponding
            # to the location. We remove it by converting the class check into
            # an "INSTANCEOF" Filter block, which OrientDB is unable to optimize away.
            new_query = _expose_only_preferred_locations(
                match_query, location_types, coerced_locations,
                preferred_locations, eligible_locations)
        elif eligible_locations:
            # Make sure that all eligible locations have a "class:" clause by adding
            # a CoerceType block that is a no-op as guaranteed by the schema. This merely
            # ensures that OrientDB is able to use each of these locations as a query start point,
            # and will choose the one whose class is of lowest cardinality.
            new_query = _expose_all_eligible_locations(
                match_query, location_types, eligible_locations)
        else:
            raise AssertionError(u'This query has no preferred or eligible query start locations. '
                                 u'This is almost certainly a bug: {}'.format(match_query))

        new_queries.append(new_query)

    return compound_match_query._replace(match_queries=new_queries)