protected static AVLTreeDigest delegateMerge(double compression, List<AVLTreeDigest> subData) { int n = Math.max(1, subData.size() / 4); AVLTreeDigest r = new AVLTreeDigest(compression); if (subData.get(0).isRecording()) { r.recordAllData(); } for (int i = 0; i < subData.size(); i += n) { if (n > 1) { r.add(delegateMerge(compression, subData.subList(i, Math.min(i + n, subData.size())))); } else { r.add(subData.get(i)); } } return r; } }