code: @Override
      public void set(int index, boolean value) {
          int i = Arrays.binarySearch(trueBits, index);
          // bit at index is set to true and shall be set to false
          if (i >= 0 && !value) {
              int[] tmp = new int[trueBits.length - 1];
              System.arraycopy(trueBits, 0, tmp, 0, i);
              System.arraycopy(trueBits, i + 1, tmp, i, trueBits.length - i - 1);
              trueBits = tmp;
          }
          // bit at index is set to false and shall be set to true
          else if (i < 0 && value) {
              int[] tmp = new int[trueBits.length + 1];
              System.arraycopy(trueBits, 0, tmp, 0, trueBits.length);
              tmp[tmp.length - 1] = index;
              trueBits = tmp;
              Arrays.sort(trueBits);
          }
      }
docs: /*
  This method is VERY INNEFICIENT when called multiple times. It is the
  cost of keeping down the memory footprint. Avoid using it for building up
  IntArrayFingerprints -- instead use the constructor taking a so called
  raw fingerprint.