Main() Iterate(m, B, Result) { { Result ← {}; G:l     m' ← m; B ← {mi|mi is a cell}; G:2     For each b = Extract(B) with For each m = Extract(B) G:3        ((b ~-compatible m' Iterate(m, B, Result);           OR (m' ~-compatible b)) Result ← Result; G:4              If (m' ~-compatible b) } G:5                 mt ← m' ~ b; G:6                 If Nodelnconsistent(mt) exit; G:7                 If (|m'| = |b|) B ← B - {b}; G:8                 If (|| ≤ K) G:9                    m' ← mt; G:10                    Iterate(m', B, Result); G:11              If (b ~-compatible m') G:12                 mt ← b ~ m'; G:13                 If Nodelnconsistent(mt) exit; G:14                 If (|m'| = |b|) B ← B - {b}; G:15                 If (|| ≥ K) G:16                    m' ← mt; G:17                    Iterate(m', B, Result); G:18              For each r ∈ Result with r = m' G:19                 If (m' is not maximal w.r.t. r) return; G:20              Result ← Result ⋃ {m'}; }