private List<VespaConfigChangeAction> validateAttributeSettings() {
        List<VespaConfigChangeAction> result = new ArrayList<>();
        for (Attribute next : nextFields.attributes()) {
            Attribute current = currentFields.getAttribute(next.getName());
            if (current != null) {
                validateAttributePredicate(id, current, next, Attribute::isFastSearch, "fast-search", result);
                validateAttributePredicate(id, current, next, Attribute::isFastRank, "fast-rank", result);
                validateAttributePredicate(id, current, next, Attribute::isFastAccess, "fast-access", result);
                validateAttributeProperty(id, current, next, AttributeChangeValidator::extractDictionaryType, "dictionary: btree/hash", result);
                validateAttributeProperty(id, current, next, AttributeChangeValidator::extractDictionaryCase, "dictionary: cased/uncased", result);
                validateAttributePredicate(id, current, next, Attribute::isPaged, "paged", result);
                validatePagedAttributeRemoval(current, next);
                validateAttributeProperty(id, current, next, Attribute::densePostingListThreshold, "dense-posting-list-threshold", result);
                validateAttributePredicate(id, current, next, Attribute::isEnabledOnlyBitVector, "rank: filter", result);
                validateAttributeProperty(id, current, next, Attribute::distanceMetric, "distance-metric", result);
                validateAttributePredicate(id, current, next, AttributeChangeValidator::hasHnswIndex, "indexing: index", result);
                if (hasHnswIndex(current) && hasHnswIndex(next)) {
                    validateAttributeHnswIndexSetting(id, current, next, HnswIndexParams::maxLinksPerNode, "max-links-per-node", result);
                    validateAttributeHnswIndexSetting(id, current, next, HnswIndexParams::neighborsToExploreAtInsert, "neighbors-to-explore-at-insert", result);
                }
            }
        }
        return result;
    }
Validates the changes between the current and next set of attribute fields in a document database.

@author geirst
config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java