Fix error in expanded example.
Method refactoring

Previously, adt methods were created anew for each type within
a closure, leading to bloat. Refactored so all adts share the same
methods via mixins.