  While developing their software, professional object-oriented (OO) software
developers keep in their minds an image of the subtyping relation between types
in their software. The goal of this paper is to present an observation about
the graph of the subtyping relation in Java, namely the observation that, after
the addition of generics---and of wildcards, in particular---to Java, the graph
of the subtyping relation is no longer a simple directed-acyclic graph (DAG),
as in pre-generics Java, but is rather a fractal. Further, this observation
equally applies to other mainstream nominally-typed OO languages (such as C#,
C++ and Scala) where generics and wildcards (or some other form of 'variance
annotations') are standard features. Accordingly, the shape of the subtyping
relation in these OO languages is more complex than a tree or a simple DAG, and
indeed is also a fractal. Given the popularity of fractals, the fractal
observation may help OO software developers keep a useful and intuitive mental
image of their software's subtyping relation, even if it is a little more
frightening, and more amazing one than before. With proper support from IDEs,
the fractal observation can help OO developers in resolving type errors they
may find in their code in lesser time, and with more confidence.
