Function changeCast

Forces a type change and continues checking. This is inherently unsafe from a compiler point of view, so it's up to the caller to ensure logical soundness