Matching on cases, performing pattern bindings, and matching whole trees of
patterns needs to be implemented. Some syntax is needed for matching on cases
while binding the whole variant object to a name rather than binding each
element of the contents to separate names.