                         .including(required: C
                             .hasMany(D.self)))
                 
-                try XCTAssertEqual(request.databaseRegion(db).description, "a(cola1,cola2),c(colc1,colc2),d(cold1,cold2,cold3)")
+                try assertRequestRegionEqual(db, request, "a(cola1,cola2),c(colc1,colc2),d(cold1,cold2,cold3)")
             }
             
             // Request with filters

                            .forKey("ds2"))
                        .forKey("cs2"))
                
                try XCTAssertEqual(request.databaseRegion(db).description, "a(cola1,cola2),c(colc1,colc2),d(cold1,cold2,cold3)")
            }
        }
    }

private struct D: TableRecord { }

class AssociationPrefetchingObservationTests: GRDBTestCase {
    private func assertRequestRegionEqual<T>(
        _ db: Database,
        _ request: QueryInterfaceRequest<T>,
        _ expectedDescriptions: String...,
        file: StaticString = #file, line: UInt = #line) throws
    {
        // Test DatabaseRegionConvertible
        let region1 = try request.databaseRegion(db)
        XCTAssertTrue(expectedDescriptions.contains(region1.description), description, file: file, line: line)
        
        // Test raw statement region, as support for Database.recordingSelection
        let region2 = try request
            .makePreparedRequest(db, forSingleResult: false)
            .statement
            .databaseRegion
        XCTAssertTrue(expectedDescriptions.contains(region2.description), description, file: file, line: line)
    }
    
    override func setup(_ dbWriter: DatabaseWriter) throws {
        try dbWriter.write { db in
            try db.create(table: "a") { t in
