### Question:
EditSequence { public BiCounter<Character, EdOp> stats(String s1, String s2) { BiCounter<Character, EdOp> stats = new BiCounter<Character, EdOp>(); int n1 = 0; int n2 = 0; for (EdOp op : ops) { if (op != EdOp.INSERT) { stats.inc(s1.charAt(n1), op); ++n1; } else { stats.inc(s2.charAt(n2), EdOp.INSERT); } if (op != EdOp.DELETE) { ++n2; } } return stats; } EditSequence();  EditSequence(int initialCapacity);  EditSequence(String first, String second, EdOpWeight w);  EditSequence(String s1, String s2, EdOpWeight w, int chunkLen);  EditSequence(TokenArray first, TokenArray second);  EditSequence(TokenArray a1, TokenArray a2, int chunkLen); EdOp get(int pos); final void add(EdOp op); final void append(EditSequence other); EditSequence head(int len); int size(); int length(); final int shift1(); final int shift2(); @Override String toString(); BiCounter<Character, EdOp> stats(String s1, String s2); BiCounter<Character, EdOp> stats(String s1, String s2, EdOpWeight w); int cost(String s1, String s2, EdOpWeight w); static void main(String[] args);  }### Answer:
@Test public void testStats() { System.out.println("stats"); String s1 = "acb"; String s2 = "abs"; EditSequence instance = new EditSequence(s1, s2, new OcrOpWeight()); BiCounter<Character, EdOp> result = instance.stats(s1, s2); BiCounter<Character, EdOp> expResult = new BiCounter<Character, EdOp>(); expResult.add('a', EdOp.KEEP, 1); expResult.add('b', EdOp.KEEP, 1); expResult.add('c', EdOp.DELETE, 1); expResult.add('s', EdOp.INSERT, 1); assertEquals(expResult, result); EdOpWeight w = new OcrOpWeight(); result = instance.stats(s1, s2, w); assertEquals(expResult, result); }