Abstract data types represented in columnar form.
These ADTs are generally recursive, which is why they required a special implementation.