WITH type.body
SELECT
FROM
u: REF atom PT.BaseTypeTGNBody => BitSizeOfAtomBaseType[u, cs],
u: REF boolean base PT.ElementTGNBody => StaticIntInstance[1, cs],
u: REF integer base PT.ElementTGNBody => BitSizeOfIntegerBaseType[u, cs],
u: PT.SpecialTGN => BitSizeOfSpecial[u, cs],
u: PT.SubrangeTGN => BitSizeOfSubrange[u, cs],
u: PT.RecordTGN => BitSizeOfRecord[u, cs],
u: PT.PointerTGN => BitSizeOfPointer[u, cs],
u: PT.RefTGN => BitSizeOfRef[u, cs],
u: PT.VarTGN => BitSizeOfVar[u, cs],
u: PT.RelativeTGN => BitSizeOfRelative[u, cs],
u: PT.ReferentTGN => BitSizeOfReferent[u, cs],
u: PT.ListTGN => BitSizeOfList[u, cs],
u: PT.EnumTGN => BitSizeOfEnum[u, cs],
u: PT.VariantPartTGN => BitSizeOfVariantPart[u, cs],
u: PT.SequenceTGN => BitSizeOfSequence[u, cs],
u: PT.ArrayTGN => BitSizeOfArray[u, cs],
u: PT.DescriptorTGN => BitSizeOfDescriptor[u, cs],
u: PT.TransferTGN => BitSizeOfTransfer[u, cs],
u: PT.ZoneTGN => BitSizeOfZone[u, cs],
u: PT.LongTGN => BitSizeOfLong[u, cs],
u: PT.InterfaceTGN => BitSizeOfInterface[u, cs],
u: PT.LinkTGN => BitSizeOfLink[u, cs],
u: PT.FrameTGN => BitSizeOfFrame[u, cs],
u: PT.SpecianatedTGN => BitSizeOfSpecianated[u, cs],
u: PT.OpaqueTGN => BitSizeOfOpaque[u, cs],
ENDCASE =>
ERROR SaffronErrorHandling.InternalError["Unrecognized type passed as first
argument to SaffronTypeSizeImpl.BitSizeOf"]