code: private void updateParentsAlloc(int id) {
          while (id > 1) {
              int parentId = id >>> 1;
              byte val1 = value(id);
              byte val2 = value(id ^ 1);
              byte val = val1 < val2 ? val1 : val2;
              setValue(parentId, val);
              id = parentId;
          }
      }
docs: Update method used by allocate
  This is triggered only when a successor is allocated and all its predecessors
  need to update their state
  The minimal depth at which subtree rooted at id has some free space
  
  @param id id