 
 ///  A `CollectionSupplementaryViewFactory` is a concrete `CollectionSupplementaryViewFactoryType`.
 ///  This factory is responsible for producing and configuring supplementary views for a collection view for a specific data item.
+///  <br/><br/>
+///  **The factory has the following type parameters:**
+///  <br/>
+///  ````
+///  <SupplementaryView: UICollectionReusableView, DataItem>
+///  ````
 public struct CollectionSupplementaryViewFactory <SupplementaryView: UICollectionReusableView, DataItem>: CollectionSupplementaryViewFactoryType {
 
     ///  Configures the supplementary view for the specified data item, collection view, and index path.

    ///  :returns: The configured cell.
    public typealias ConfigurationHandler = (Cell, DataItem, UICollectionView, NSIndexPath) -> Cell

    /// A unique identifier that describes the purpose of the cells that the factory produces.
    /// The factory dequeues cells from the collection view with this reuse identifier.
    /// Clients are responsible for registering a cell for this identifier with the collection view.
    public let reuseIdentifier: String

    private let cellConfigurator: ConfigurationHandler

    ///  Initializes and returns a new collection view cell factory.
    ///
    ///  :param: reuseIdentifier  The reuse identifier with which the factory will dequeue cells.
    ///  :param: cellConfigurator The closure with which the factory will configure cells.

///  An instance conforming to `CollectionViewSectionInfo` represents a section of items in a collection view.
public protocol CollectionViewSectionInfo {

    ///  The type of elements stored in the section.
    typealias DataItem

    ///  Returns the elements in the collection view section.
    var dataItems: [DataItem] { get }
}

