 
 extension GCCountryPickerViewController {
     
-    /// Asks the delegate for the height to use for the header of a particular section.
-    ///
-    /// This method allows the delegate to specify section headers with varying heights.
-    ///
-    /// - Parameter tableView: The table-view object requesting this information.
-    /// - Parameter section: An index number identifying a section of tableView.
-    /// - Returns: A nonnegative floating-point value that specifies the height (in points) of the header for section.
-    
     public override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
         
         return 28
     }
-    
-    /// Asks the delegate for a view object to display in the header of the specified section of the table view.
-    ///
-    /// The returned object can be a UILabel or UIImageView object, as well as a custom view. This method only works correctly when tableView(_:heightForHeaderInSection:) is also implemented.
-    ///
-    /// - Parameter tableView: The table-view object asking for the view object.
-    /// - Parameter section: An index number identifying a section of tableView.
-    /// - Returns: A view object to be displayed in the header of section.
     
     public override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
         


extension GCCountryPickerViewController {
    
    /// Asks the data source to return the number of sections in the table view.
    ///
    /// - Parameter tableView: An object representing the table view requesting this information.
    /// - Returns: The number of sections in tableView. The default value is 1.
    
    public override func numberOfSections(in tableView: UITableView) -> Int {
        
        return self.countries.count
    }
    
    /// Tells the data source to return the number of rows in a given section of a table view.
    ///
    /// - Parameter tableView: The table-view object requesting this information.
    /// - Parameter section: An index number identifying a section in tableView.
    /// - Returns: The number of rows in section.
    
    public override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return self.countries[section].count
    }
    
    /// Asks the data source to return the titles for the sections for a table view.
    ///
    /// - Parameter tableView: The table-view object requesting this information.
    /// - Returns: An array of strings that serve as the title of sections in the table view and appear in the index list on the right side of the table view. The table view must be in the plain style (UITableViewStylePlain). For example, for an alphabetized list, you could return an array containing strings “A” through “Z”.
    
    public override func sectionIndexTitles(for tableView: UITableView) -> [String]? {
        
        return self.sectionIndexTitles
    }
    
    /// Asks the data source to return the index of the section having the given title and section title index.
    ///
    /// This method is passed the index number and title of an entry in the section index list and should return the index of the referenced section. To be clear, there are two index numbers in play here: an index to a section index title in the array returned by sectionIndexTitles(for:), and an index to a section of the table view; the former is passed in, and the latter is returned. You implement this method only for table views with a section index list—which can only be table views created in the plain style (plain). Note that the array of section titles returned by sectionIndexTitles(for:) can have fewer items than the actual number of sections in the table view.
    ///
    /// - Parameter tableView: The table-view object requesting this information.
    /// - Parameter title: The title as displayed in the section index of tableView.
    /// - Parameter index: An index number identifying a section title in the array returned by sectionIndexTitles(for:).
    
    public override func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {
        
        return self.collation.section(forSectionIndexTitle: index)
    }
    
    /// Asks the data source for a cell to insert in a particular location of the table view.
    ///
    /// The returned UITableViewCell object is frequently one that the application reuses for performance reasons. You should fetch a previously created cell object that is marked for reuse by sending a dequeueReusableCell(withIdentifier:) message to tableView. Various attributes of a table cell are set automatically based on whether the cell is a separator and on information the data source provides, such as for accessory views and editing controls.
    ///
    /// - Parameter tableView: A table-view object requesting the cell.
    /// - Parameter indexPath: An index path locating a row in tableView.
    /// - Returns: An object inheriting from UITableViewCell that the table view can use for the specified row. An assertion is raised if you return nil.
    
    public override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath)


extension GCCountryPickerViewController {
    
    public override func viewDidLoad() {
        
        super.viewDidLoad()
