         guard let text = self.searchController.searchBar.text,
             !text.trimmingCharacters(in: CharacterSet.whitespaces).characters.isEmpty
             else { return }
+        // TODO: Debounce.
         self.searchMapItems(withQuery: text)
     }
 

     Main search handler that makes a `MKLocalSearchRequest` and updates
     `resultsViewController`.

     For now, annotations get updated on `mapView` on search completion,
     despite latter not being visible. This is to avoid doing more work
     on dismissal.

     See [Apple docs](https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/EnablingSearch/EnablingSearch.html).
     */
    fileprivate func searchMapItems(withQuery query: String) {


            guard mapItems != self.resultsViewController.mapItems else { return }
            self.resultsViewController.mapItems = mapItems
        }
    }

    /**
     Simply reloads. But it returns the new annotations because using `MKMapView.annotations`
     or `MKMapItem.placemark` seems to yield equal but new references unsuited for selecting.
     Doing so would fail with a warning about 'un-added' annotations.
     */
    fileprivate func updateAnnotations() -> [MKAnnotation] {
        self.mapView.removeAnnotations(self.mapView.annotations)
        let annotations = self.resultsViewController.mapItems.map { $0.placemark }
        self.mapView.addAnnotations(annotations)
        return annotations
    }

    /**
