WITH t1.body
SELECT
FROM
u: PT.AtomTGN => EquivalentAtomBaseType[u, t2],
u: REF boolean base PT.ElementTGNBody => EquivalentBooleanBaseType[u, t2],
u: REF integer base PT.ElementTGNBody => EquivalentIntegerBaseType[u, t2],
u: PT.SpecialTGN => EquivalentSpecial[u, t2],
u: PT.SubrangeTGN => EquivalentSubrange[u, t2],
u: PT.RecordTGN => EquivalentRecord[u, t2],
u: PT.PointerTGN => EquivalentPointer[u, t2],
u: PT.RefTGN => EquivalentRef[u, t2],
u: PT.VarTGN => EquivalentVar[u, t2],
u: PT.RelativeTGN => EquivalentRelative[u, t2],
u: PT.ReferentTGN => EquivalentReferent[u, t2],
u: PT.ListTGN => EquivalentList[u, t2],
u: PT.EnumTGN => EquivalentEnum[u, t2],
u: PT.VariantPartTGN => EquivalentVariantPart[u, t2],
u: PT.SequenceTGN => EquivalentSequence[u, t2],
u: PT.ArrayTGN => EquivalentArray[u, t2],
u: PT.DescriptorTGN => EquivalentDescriptor[u, t2],
u: PT.TransferTGN => EquivalentTransfer[u, t2],
u: PT.ZoneTGN => EquivalentZone[u, t2],
u: PT.LongTGN => EquivalentLong[u, t2],
u: PT.InterfaceTGN => EquivalentInterface[u, t2],
u: PT.LinkTGN => EquivalentLink[u, t2],
u: PT.FrameTGN => EquivalentFrame[u, t2],
u: PT.SpecianatedTGN => EquivalentSpecianated[u, t2],
u: PT.OpaqueTGN => EquivalentOpaque[u, t2],
ENDCASE =>
ERROR SaffronErrorHandling.InternalError["Unrecognized type passed as first argument to SaffronTypeConformanceImpl.Equivalent"]