Aquí se detallan las extensión de un OO lenguaje:

1)  Con clases como valores de primera clase. Además debe ser posible crear clases
en tiempo de ejecución.
      Basarse en capitulos first & higher functions del PLAI (mirar también slides)

2) Con mutación de valores usando técnicas funcionales
Ver capitulo 13 Mutable Data Structures del PLAI

3) Con múltiple herencia
Basarse en C++ & Python

4) Con métodos que soporten múltiples parámetros
    Usar su ingenio 😛

5) Con soporte a Mixin
Implementing layered designs with mixin layers – Y. Smaragdakis and D. Batory

6) Con soporte inner (es como super pero al revés)
    Super and inner: together at last! -Goldberg, David S. and Findler, Robert Bruce and Flatt, Matthew

7) Con soporte de aspectos. Un aspecto puede interceptar un la ejecución de método m de una clase A y ejecutar un código antes o después.
     A Compilation and Optimization Model for Aspect-Oriented Program” – Masuhara, H Kiczales, G Dutchyn, C
    An Overview of AspectJ – Kiczales, Gregor Hilsdale, Erik Hugunin, Jim Kersten, Mik Palm, Jeffrey Griswold, William G

Para cada paper, no es necesario leerlo completos, solo sus primeras secciones