 //: None of those use cases can be handled by the built-in `FetchableRecord`
 //: protocol and its `init(row:)` initializer. They need *customized
 //: row decoding*.
+//:
+//: ## An Example: Polymorphic Decoding
 //:
 //: In this playground, we will provide some sample code that performs
 //: polymorphic row decoding. Given a base class, `Base`, and two subclasses

    }
}

// MARK: Fetching From SQL

/// Fetch from SQL:
///
///     struct Decoder: DatabaseDecoder { ... }
///     try dbQueue.read { db in
///         let values = try Decoder.fetchAll(db, "SELECT ...")
///     }
extension DatabaseDecoder {
    static func fetchCursor(_ db: Database, _ sql: String, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> MapCursor<RowCursor, DecodedType> {
        return try fetchCursor(db, SQLRequest<Self>(sql, arguments: arguments, adapter: adapter))
    }

//: few extensions that guarantee the most efficient use of GRDB, and have the
//: Base class adopt this protocol.
//:
//: ## Keep It Simple, Stupid!
//:
//: But first, let's see how polymorphic decoding can be done as simply as
//: possible. After all, it is useless to design a full-fledged protocol unless
//: we need to use this protocol several times, or write code that is as
//: streamlined as possible.
//:
//: Can we fetch Foo and Bar values from an SQL request? Sure:

