This involved implementing the 'TryWithImplicits' hack for allowing unbound implicits in types with case blocks