code: private void generateBucketIds() {
          // generate indexes for buckets, needed if two different ranges belong to the same file
          this.buckets = 0;
          bucketIds = new int[filenames.length];
  
          HashMap<String, Integer> tmpSeenFilenames = new HashMap<String, Integer>();
          for (int i = 0; i < filenames.length; i++) {
              if (!tmpSeenFilenames.containsKey(filenames[i])) {
                  tmpSeenFilenames.put(filenames[i], this.buckets++);
              }
              bucketIds[i] = tmpSeenFilenames.get(filenames[i]);
          }
          this.buckets = bucketIds.length;
      }
docs: generates the correct index structure, namely the bucketIds to the already initialized filenames and
  maxRangeValues