Tests pass.  Needs more testing around the type system and the to_adsl stuff, but not now