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);
    }
  }