 //: The resulting code is not as streamlined as usual GRDB code, but we could
 //: already do what we needed without much effort.
 //:
-//: ## Custom Protocol: MyDatabaseDecoder
+//: ### Custom Protocol: MyDatabaseDecoder
 //:
 //: In the rest of this playground, we will define a **new realm of requests**.
 //:

        }
    }
    
    // Define fetchAll, fetchOne, ...
}

//: - Your application needs a record type that supports untrusted databases,
//: and may fail at decoding database rows (throw an error when a row contains
//: invalid values).
//:
//:     In this case, you may define a `FailableFetchableRecord` protocol, and
//:     derive all other fetching methods from the most fundamental one, which
//:     fetches a cursor from a prepared statement (as above):

protocol FailableFetchableRecord {
    init(row: Row) throws

//: 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
