public NeighborProvider getReverseProviderWithTraitRelationships() {
        NeighborProvider result = reversedWithTraits;

        if (result == null) {
            synchronized (this) {
                result = reversedWithTraits;
                if (result == null) {
                    NeighborProvider withTraits = getProviderWithTraitRelationships();
                    reversedWithTraits = result = NeighborProvider.reverse(getOrThrowModel(), withTraits);
                }
            }
        }

        return result;
    }
Gets a reversed, bottom up neighbor provider that includes reverse traits.

@return Returns the reversed neighbor provider with reverse traits.
smithy-model/src/main/java/software/amazon/smithy/model/knowledge/NeighborProviderIndex.java