@Override void traverse(@Nullable TypeElement element, Set<TypeElement> linearizedTypes) {
      if (element == null || isJavaLangObject(element)) {
        return;
      }
      // we add this before so we start with the shallowest
      linearizedTypes.add(element);
      traverseSuperclass(element, linearizedTypes);
      traverseInterfaces(element, linearizedTypes);
    }
Prior to Immutables 2.7.5 (<a href="https://github.com/immutables/immutables/issues/889">Issue 889</a>), this was the
defined traversal order. The new TopDownOrdering breaks compatibility with older versions of
immutables and can hinder migration efforts for some clients. We've introduced this legacy
ordering under the system flag {@code org.immutables.useLegacyAccessorOrdering=true}
generator/src/org/immutables/generator/SourceOrdering.java