public HitGroup clone() {
        HitGroup hitGroupClone = (HitGroup) super.clone();
        hitGroupClone.hits = new ListenableArrayList<>(this.hits.size());
        hitGroupClone.unmodifiableHits = Collections.unmodifiableList(hitGroupClone.hits);
        for (Hit value : this.hits) {
            Hit hitClone = value.clone();
            hitGroupClone.hits.add(hitClone);
        }
        if (this.errorHit != null) { // Find the cloned error and assign it
            for (Hit hit : hitGroupClone.asList()) {
                if (hit instanceof DefaultErrorHit)
                    hitGroupClone.errorHit=(DefaultErrorHit)hit;
            }
        }

        if (this.getFilledInternal()!=null) {
            hitGroupClone.setFilledInternal(new HashSet<>(this.getFilledInternal()));
        }

        return hitGroupClone;
    }
Update concreteHitCount, cached and filled by iterating trough the hits of this result.
Recursively also update all subgroups.
container-search/src/main/java/com/yahoo/search/result/HitGroup.java