 ///     let row = try Row.fetchOne(db, sql, adapter: adapter)!
 ///
 ///     // Scoped rows:
-///     if let fooRow = row.scoped(on: "foo") {
+///     if let fooRow = row.scopes["foo"] {
 ///         fooRow["value"]    // "foo"
 ///     }
-///     if let barRow = row.scopeed(on: "bar") {
+///     if let barRow = row.scopes["bar"] {
 ///         barRow["value"]    // "bar"
 ///     }
 public struct ScopeAdapter : RowAdapter {

    ///     let baseAdapter = RangeRowAdapter(0..<1)
    ///     let adapter = ScopeAdapter(base: baseAdapter, scopes: ["suffix": SuffixRowAdapter(fromIndex: 1)])
    ///     let row = try Row.fetchOne(db, "SELECT 1, 2, 3", adapter: adapter)!
    ///     row                       // [1]
    ///     row.scoped(on: "initial") // [2, 3]
    ///
    /// If the base adapter already defines scopes, the given scopes replace
    /// eventual existing scopes with the same name.

///         "c": adapters[2],
///         "d": adapters[3]])
///     let row = try Row.fetchOne(db, sql, adapter: adapter)
///     row.scopes["a"] // [1]
///     row.scopes["b"] // [2, 3, 4]
///     row.scopes["c"] // [5, 6]
///     row.scopes["d"] // [7, 8]
public func splittingRowAdapters(columnCounts: [Int]) -> [RowAdapter] {
    guard !columnCounts.isEmpty else {
        // Identity adapter
