Actually, the best and most flexible way would be passing in the literalExpression and Column. In that case, we can replicate all the existing error messages inside the coerceBytes method. In its current way, we would get which column generates the exception, but we would not know which expression generates the exception.

It's not perfect logically that PDataType would use the internal of the LiteralExpression and Column, but passing in all the required information would cause code maintenance problem too.