docs: public DefaultConsistentHash union(DefaultConsistentHash dch2) {
        checkSameHashAndSegments(dch2);
        if (numOwners != dch2.getNumOwners()) {
           throw new IllegalArgumentException("The consistent hash objects must have the same number of owners");
        }
  
        List<Address> unionMembers = new ArrayList<>(this.members);
        mergeLists(unionMembers, dch2.getMembers());
  
        List<Address>[] unionSegmentOwners = new List[segmentOwners.length];
        for (int i = 0; i < segmentOwners.length; i++) {
           unionSegmentOwners[i] = new ArrayList<>(locateOwnersForSegment(i));
           mergeLists(unionSegmentOwners[i], dch2.locateOwnersForSegment(i));
        }
  
        Map<Address, Float> unionCapacityFactors = unionCapacityFactors(dch2);
        return new DefaultConsistentHash(hashFunction, numOwners, unionSegmentOwners.length, unionMembers, unionCapacityFactors, unionSegmentOwners);
     }