         
         return true
     }
-    
-    private func next() -> (Int, Int)? {
-        var min = R.zero
-        var (i0, j0) = (0, 0)
-        
-        for (i, j) in indexIterator() {
-            let a = result[i, j]
-            
-            if a.isUnit {
-                return (i, j)
-            }
-            
-            if a != 0 && (min == 0 || a.degree < min.degree) {
-                min = a
-                (i0, j0) = (i, j)
-            }
-        }
-        
-        if min == 0 {
-            return nil
-        } else {
-            return (i0, j0)
-        }
-    }
 }
 
 fileprivate class FieldEliminationProcessor<R: Field, n: _Int, m: _Int>: BaseEliminationProcessor<R, n, m> {

        }
        return nil
    }
}


        self.cols = target.cols
        self.result = target
        self.process = []
        self.maxItr = {
            switch mode {
            case .Both: return min(target.rows, target.cols)
            case .Rows: return target.rows
            case .Cols: return target.cols
            }
        }()
    }
    
    func run() {
        log("-----Start (mode: \(mode))-----\n\n\(result.alignedDescription)\n")
        
        while itr < maxItr {
            if iteration() {
