original.java
@Override
public StringTerms buildAggregation(long owningBucketOrdinal) {
    assert owningBucketOrdinal == 0;
    final int size = (int) Math.min(bucketOrds.size(), shardSize);

    BucketPriorityQueue ordered = new BucketPriorityQueue(size, order.comparator());
    OrdinalBucket spare = null;
    for (int i = 0; i < bucketOrds.size(); ++i) {
        if (spare == null) {
            spare = new OrdinalBucket();
        }
        bucketOrds.get(i, spare.termBytes);
        spare.docCount = bucketDocCount(i);
        spare.bucketOrd = i;
        spare = (OrdinalBucket) ordered.insertWithOverflow(spare);
    }

    final InternalTerms.Bucket[] list = new InternalTerms.Bucket[ordered.size()];
    for (int i = ordered.size() - 1; i >= 0; --i) {
        final OrdinalBucket bucket = (OrdinalBucket) ordered.pop();
        bucket.aggregations = bucketAggregations(bucket.bucketOrd);
        list[i] = bucket;
    }
    return new StringTerms(name, order, requiredSize, Arrays.asList(list));
}}
modified.java
@Override
public StringTerms buildAggregation(long owningBucketOrdinal) {
    assert owningBucketOrdinal == 0;
    final int size = (int) Math.min(bucketOrds.size(), shardSize);

    BucketPriorityQueue ordered = new BucketPriorityQueue(size, order.comparator(this));
    StringTerms.Bucket spare = null;
    for (int i = 0; i < bucketOrds.size(); i++) {
        if (spare == null) {
            spare = new StringTerms.Bucket(new BytesRef(), 0, null);
        }
        bucketOrds.get(i, spare.termBytes);
        spare.docCount = bucketDocCount(i);
        spare.bucketOrd = i;
        spare = (StringTerms.Bucket) ordered.insertWithOverflow(spare);
    }

    final InternalTerms.Bucket[] list = new InternalTerms.Bucket[ordered.size()];
    for (int i = ordered.size() - 1; i >= 0; --i) {
        final StringTerms.Bucket bucket = (StringTerms.Bucket) ordered.pop();
        bucket.aggregations = bucketAggregations(bucket.bucketOrd);
        list[i] = bucket;
    }
    return new StringTerms(name, order, requiredSize, Arrays.asList(list));
}}