     /// access to the SQLite statement. Iteration of the statement does modify
     /// the row.
     init(statement: SelectStatement) {
-        let statementRef = Unmanaged.passRetained(statement)
+        let statementRef = Unmanaged.passRetained(statement) // released in init
         self.statementRef = statementRef
         self.sqliteStatement = statement.sqliteStatement
         self.impl = StatementRowImpl(statementRef: statementRef, sqliteStatement: statement.sqliteStatement)

    // MARK: - Not Public
    
    let impl: RowImpl
    let statementRef: Unmanaged<SelectStatement>?
    let sqliteStatement: SQLiteStatement
    

    init(statementRef: Unmanaged<SelectStatement>, sqliteStatement: SQLiteStatement) {
        self.statementRef = statementRef
        self.sqliteStatement = sqliteStatement
        // Optimize row.value(named: "...")
        let lowercaseColumnNames = (0..<sqlite3_column_count(sqliteStatement)).map { String.fromCString(sqlite3_column_name(sqliteStatement, Int32($0)))!.lowercaseString }
        self.lowercaseColumnIndexes = Dictionary(lowercaseColumnNames.enumerate().map { ($1, $0) }.reverse())
    }
