     }
     
     func copy(row: Row) -> Row {
-        return Row(copiedFromStatementRef: statementRef, sqliteStatement: sqliteStatement)
+        return Row(copiedFromSQLiteStatement: sqliteStatement, statementRef: statementRef)
     }
 }
 

    let sqliteStatement: SQLiteStatement
    let lowercaseColumnIndexes: [String: Int]
    
    init(statementRef: Unmanaged<SelectStatement>, sqliteStatement: SQLiteStatement) {
        self.statementRef = statementRef
        self.sqliteStatement = sqliteStatement
        // Optimize row.value(named: "...")


/// See Row.init(copiedFromStatementRef:sqliteStatement:)
private struct StatementCopyRowImpl : RowImpl {
    let databaseValues: ContiguousArray<DatabaseValue>
    let columnNames: [String]
    
    init(sqliteStatement: SQLiteStatement, columnNames: [String]) {
        assert(sqliteStatement != nil)
        let sqliteStatement = sqliteStatement
        self.databaseValues = ContiguousArray((0..<sqlite3_column_count(sqliteStatement)).lazy.map { DatabaseValue(sqliteStatement: sqliteStatement, index: $0) })
        self.columnNames = columnNames
    }
    
    var count: Int {
