Parses casts
Can only perform a real cast in certain situations. When it can't it tries to mimic a cast using parsing or conversion.