docs: public void set(long index, Block value)
      {
          Block currentValue = array.get(index);
          if (currentValue != null) {
              currentValue.retainedBytesForEachPart((object, size) -> {
                  if (currentValue == object) {
                      // track instance size separately as the reference count for an instance is always 1
                      sizeOfBlocks -= size;
                      return;
                  }
                  if (trackedObjects.decrementAndGet(object) == 0) {
                      // decrement the size only when it is the last reference
                      sizeOfBlocks -= size;
                  }
              });
          }
          if (value != null) {
              value.retainedBytesForEachPart((object, size) -> {
                  if (value == object) {
                      // track instance size separately as the reference count for an instance is always 1
                      sizeOfBlocks += size;
                      return;
                  }
                  if (trackedObjects.incrementAndGet(object) == 1) {
                      // increment the size only when it is the first reference
                      sizeOfBlocks += size;
                  }
              });
          }
          array.set(index, value);
      }