prepare_change
prepare_change(old_term :: term(), new_uncasted_term :: term(), constraints()) :: {:ok, term()} | {:error, term()}