typesAreEqual
Checks if two Iceberg Types are semantically equal by comparing type IDs and any relevant sub-properties (e.g., for timestamps, lists, structs).
Return
true if they are effectively the same type, false otherwise.
Parameters
incomingType
the type from the incoming schema.
existingType
the type from the existing schema.
Throws
if an unsupported or unmapped Iceberg type is encountered.