I'd prefer to leave it as is, as otherwise callsite will be responsible for cast, and match will reside in callsite. 
This way we can simplify error handling, and have it in single place for a very common case when particular type of tree is expected and modified.