     /// - parameter columnName: A column name.
     /// - returns: An optional *Value*.
     public func value<Value: protocol<DatabaseValueConvertible, SQLiteStatementConvertible>>(named columnName: String) -> Value? {
-        if let index = impl.indexForColumn(named: columnName) {
-            return value(atIndex: index)
-        } else {
+        guard let index = impl.indexForColumn(named: columnName) else {
             fatalError("No such column: \(String(reflecting: columnName))")
         }
+        return value(atIndex: index)
     }
     
     /// Returns the value of type `Value` at given column.

    func dataNoCopy(atIndex index:Int) -> NSData?
    func columnName(atIndex index: Int) -> String
    func indexForColumn(named name: String) -> Int? // This method MUST be case-insensitive.
    func detachedRow(row: Row) -> Row               // The row argument has the receiver as an impl.
}



    /// specific one: `row.copy()`.
    @warn_unused_result
    public func copy() -> Row {
        return impl.copiedRow(self)
    }
    
    
