Use ERROR instead of THROW. Exceptions are experimental.
Specify pedicates in CASEs.
Don't optimize until the GC is rock-stable again.