This paper presents the “Safe-Instantiation Principle,” a new design principle for evaluating extensions of Java with support for generic types. We discuss the GJ and NextGen formulations of Generic Java and the implications of safe instantiation on both approaches. We then consider the implications of safe-instantiation for the addition of mixins to Java via generic types. Finally, we defend the formulation of mixins as hygienic program constructs, arguing that a hygienic formulation is the only way to maintain safe instantiation
Eric E. Allen, Robert Cartwright