/** * A map from exposed types to place where they are exposed, in the sense of being a part of a * public-facing API surface. * * <p>This map is the adjencency list representation of a directed graph, where an edge from type * {@code T1} to type {@code T2} indicates that {@code T2} directly exposes {@code T1} in its API * surface. * * <p>The traversal methods in this class are designed to avoid repeatedly processing types, since * there will almost always be cyclic references. */ private Multimap<Class<?>, Class<?>> getExposedToExposers() { if (exposedToExposers == null) { constructExposedToExposers(); } return exposedToExposers; }