     
         /**
          Completion closure executed after user delete an alternative location.
+     
          - important:
              If you override `func alternativeLocationDidDelete(locationItem: LocationItem)` without calling `super`, this closure would not be called.
      

    
        /**
         Locations you want to show in the location list.
         - Note:
             Alternatively, `LocationPicker` can obtain locations by DataSource:
             1. conform to `protocol LocationPickerDataSource`
             2. set the `var dataSource`
             3. implement `func numberOfAlternativeLocations() -> Int` to tell the `tableView` how many rows to display
             4. implement `func alternativeLocationAtIndex(index: Int) -> LocationItem`
         - SeeAlso:
             * `func numberOfAlternativeLocations() -> Int`
             * `func alternativeLocationAtIndex(index: Int) -> LocationItem`
             * `protocol LocationPickerDataSource`
        */
    public var alternativeLocations: [LocationItem]?
    public var doneButtonItem: UIBarButtonItem? {
        didSet {
            doneButtonItem?.target = self

            localSearchRequest.naturalLanguageQuery = searchText
            
            if let currentCoordinate = locationManager.location?.coordinate {
                localSearchRequest.region = MKCoordinateRegionMakeWithDistance(currentCoordinate, searchDistance, searchDistance)
            }
            MKLocalSearch(request: localSearchRequest).startWithCompletionHandler({ (localSearchResponse, error) -> Void in
                guard error == nil else { return }
