public Cell merge(Cell m, Cell e) {Cell n = new Cell();if (m.skip != e.skip) {return null;}if (m.cmd >= 0) {if (e.cmd >= 0) {if (m.cmd == e.cmd) {n.cmd = m.cmd;} else {return null;}} else {n.cmd = m.cmd;}} else {n.cmd = e.cmd;}if (m.ref >= 0) {if (e.ref >= 0) {if (m.ref == e.ref) {if (m.skip == e.skip) {n.ref = m.ref;} else {return null;}} else {return null;}} else {n.ref = m.ref;}} else {n.ref = e.ref;}n.cnt = m.cnt + e.cnt;n.skip = m.skip;return n;}

public virtual Cell Merge(Cell m, Cell e){Cell n = new Cell();if (m.skip != e.skip){return null;}if (m.cmd >= 0){if (e.cmd >= 0){if (m.cmd == e.cmd){n.cmd = m.cmd;}else{return null;}}else{n.cmd = m.cmd;}}else{n.cmd = e.cmd;}if (m.@ref >= 0){if (e.@ref >= 0){if (m.@ref == e.@ref){if (m.skip == e.skip){n.@ref = m.@ref;}else{return null;}}else{return null;}}else{n.@ref = m.@ref;}}else{n.@ref = e.@ref;}n.cnt = m.cnt + e.cnt;n.skip = m.skip;return n;}
