Add syntactic sugar for recursive class types
Use recursive self type notation