private void build(ImageSegment segment) throws IOException { SortedSet<ImageSegment> set = segments.get(segment.getId()); if (set == null) { set = new TreeSet<>(); segments.put(segment.getId(), set); } set.add(segment); segment = set.last(); if (segment.isLast() && set.size() > segment.getIndex()) { segments.remove(segment.getId()); build(set); } }