 
 
 /**
-The SelectStatement methods that fetch rows.
+The SelectStatement methods that fetch RowModels.
 */
 extension SelectStatement {
     
-    // let persons = statement.fetch(Person.self, bindings: ...)
+    /**
+    Fetches a lazy sequence of RowModels.
+        
+        let statement = db.selectStatement("SELECT * FROM persons")
+        let persons = statement.fetch(Person.self)
+
+    - parameter type:     The type of fetched row models. It must be a subclass
+                          of RowModel.
+    - parameter bindings: Optional bindings for query parameters.
+    
+    - returns: A lazy sequence of row models.
+    */
     public func fetch<RowModel: GRDB.RowModel>(type: RowModel.Type, bindings: Bindings? = nil) -> AnySequence<RowModel> {
         let rowSequence = fetchRows(bindings: bindings)
         return AnySequence { () -> AnyGenerator<RowModel> in


// MARK: - RowModel

public class RowModel {
    
    /// A primary key
    public enum PrimaryKey {
        /// A primary key managed by SQLite.
        case RowID(String)
        

        case Columns([String])
    }
    
    /// A table definition.
    public struct Table {
        
        /// The table name
        public let name: String
        
        /// The primary key
        public let primaryKey: PrimaryKey?
        
        /// Creates a Table given its name and primary key (default nil, meaning
        /// that the table has no primary key.
        public init(named name: String, primaryKey: PrimaryKey? = nil) {
            self.name = name
            self.primaryKey = primaryKey
