Skip to content

Instantly share code, notes, and snippets.

@Cheatoid
Last active December 11, 2020 20:36
Show Gist options
  • Save Cheatoid/b941df6ed2276fbeee17098c77410fee to your computer and use it in GitHub Desktop.
Save Cheatoid/b941df6ed2276fbeee17098c77410fee to your computer and use it in GitHub Desktop.
[E2] table:reverse function (holy sh*t, this is reta**ed...)
# I needed an E2 function to...
# Reverse a sequential array-part of the given E2 table (using by-reference semantics, hence not returning a new table),
# but since there is no such builtin/official E2 function, I had to "invent" my own... Thanks to Wire for being lazy :D
# This is one of the most cancerous E2 functions ever. The reversing algorithm itself is pretty fast: O(n/2)
# The reason this code is soo big is basically because of how E2 tables work.
# We have to know the type of both values while performing a swap operation...
# (P.S. The code was fully auto-generated by my own tool.)
# (P.P.S. A sample test code can be found on the very bottom.)
# https://gist.github.com/b941df6ed2276fbeee17098c77410fee
function table:reverse(){
    local D=This:typeidsArray()
    local Count=D:count()
    for(I=1,floor(Count/2)){
        local J=Count-I+1
        switch(D[I,string]){
            case "a",switch(D[J,string]){
                case "a",local A_A=This[I,angle] This[I,angle]=This[J,angle] This[J,angle]=A_A break
                case "r",local A_R=This[I,angle] This[I,array]=This[J,array] This[J,angle]=A_R break
#ifdef table:popAttachment()
                case "xat",local A_XAT=This[I,angle] This[I,attachment]=This[J,attachment] This[J,angle]=A_XAT break
#endif
                case "b",local A_B=This[I,angle] This[I,bone]=This[J,bone] This[J,angle]=A_B break
#ifdef table:popCollision()
                case "xcl",local A_XCL=This[I,angle] This[I,collision]=This[J,collision] This[J,angle]=A_XCL break
#endif
                case "c",local A_C=This[I,angle] This[I,complex]=This[J,complex] This[J,angle]=A_C break
#ifdef table:popCoroutine()
                case "xco",local A_XCO=This[I,angle] This[I,coroutine]=This[J,coroutine] This[J,angle]=A_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local A_XCR=This[I,angle] This[I,curve]=This[J,curve] This[J,angle]=A_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local A_XDM=This[I,angle] This[I,damage]=This[J,damage] This[J,angle]=A_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local A_XEF=This[I,angle] This[I,effect]=This[J,effect] This[J,angle]=A_XEF break
#endif
                case "e",local A_E=This[I,angle] This[I,entity]=This[J,entity] This[J,angle]=A_E break
#ifdef table:popFtrace()
                case "xft",local A_XFT=This[I,angle] This[I,ftrace]=This[J,ftrace] This[J,angle]=A_XFT break
#endif
                case "m",local A_M=This[I,angle] This[I,matrix]=This[J,matrix] This[J,angle]=A_M break
                case "xm2",local A_XM2=This[I,angle] This[I,matrix2]=This[J,matrix2] This[J,angle]=A_XM2 break
                case "xm4",local A_XM4=This[I,angle] This[I,matrix4]=This[J,matrix4] This[J,angle]=A_XM4 break
                case "n",local A_N=This[I,angle] This[I,number]=This[J,number] This[J,angle]=A_N break
                case "q",local A_Q=This[I,angle] This[I,quaternion]=This[J,quaternion] This[J,angle]=A_Q break
                case "xrd",local A_XRD=This[I,angle] This[I,ranger]=This[J,ranger] This[J,angle]=A_XRD break
#ifdef table:popStcontrol()
                case "xsc",local A_XSC=This[I,angle] This[I,stcontrol]=This[J,stcontrol] This[J,angle]=A_XSC break
#endif
                case "s",local A_S=This[I,angle] This[I,string]=This[J,string] This[J,angle]=A_S break
                case "t",local A_T=This[I,angle] This[I,table]=This[J,table] This[J,angle]=A_T break
#ifdef table:popTracedata()
                case "xtd",local A_XTD=This[I,angle] This[I,tracedata]=This[J,tracedata] This[J,angle]=A_XTD break
#endif
                case "v",local A_V=This[I,angle] This[I,vector]=This[J,vector] This[J,angle]=A_V break
                case "xv2",local A_XV2=This[I,angle] This[I,vector2]=This[J,vector2] This[J,angle]=A_XV2 break
                case "xv4",local A_XV4=This[I,angle] This[I,vector4]=This[J,vector4] This[J,angle]=A_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local A_XWM=This[I,angle] This[I,webmaterial]=This[J,webmaterial] This[J,angle]=A_XWM break
#endif
                case "xwl",local A_XWL=This[I,angle] This[I,wirelink]=This[J,wirelink] This[J,angle]=A_XWL break
            } break
            case "r",switch(D[J,string]){
                case "a",local R_A=This[I,array] This[I,angle]=This[J,angle] This[J,array]=R_A break
                case "r",local R_R=This[I,array] This[I,array]=This[J,array] This[J,array]=R_R break
#ifdef table:popAttachment()
                case "xat",local R_XAT=This[I,array] This[I,attachment]=This[J,attachment] This[J,array]=R_XAT break
#endif
                case "b",local R_B=This[I,array] This[I,bone]=This[J,bone] This[J,array]=R_B break
#ifdef table:popCollision()
                case "xcl",local R_XCL=This[I,array] This[I,collision]=This[J,collision] This[J,array]=R_XCL break
#endif
                case "c",local R_C=This[I,array] This[I,complex]=This[J,complex] This[J,array]=R_C break
#ifdef table:popCoroutine()
                case "xco",local R_XCO=This[I,array] This[I,coroutine]=This[J,coroutine] This[J,array]=R_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local R_XCR=This[I,array] This[I,curve]=This[J,curve] This[J,array]=R_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local R_XDM=This[I,array] This[I,damage]=This[J,damage] This[J,array]=R_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local R_XEF=This[I,array] This[I,effect]=This[J,effect] This[J,array]=R_XEF break
#endif
                case "e",local R_E=This[I,array] This[I,entity]=This[J,entity] This[J,array]=R_E break
#ifdef table:popFtrace()
                case "xft",local R_XFT=This[I,array] This[I,ftrace]=This[J,ftrace] This[J,array]=R_XFT break
#endif
                case "m",local R_M=This[I,array] This[I,matrix]=This[J,matrix] This[J,array]=R_M break
                case "xm2",local R_XM2=This[I,array] This[I,matrix2]=This[J,matrix2] This[J,array]=R_XM2 break
                case "xm4",local R_XM4=This[I,array] This[I,matrix4]=This[J,matrix4] This[J,array]=R_XM4 break
                case "n",local R_N=This[I,array] This[I,number]=This[J,number] This[J,array]=R_N break
                case "q",local R_Q=This[I,array] This[I,quaternion]=This[J,quaternion] This[J,array]=R_Q break
                case "xrd",local R_XRD=This[I,array] This[I,ranger]=This[J,ranger] This[J,array]=R_XRD break
#ifdef table:popStcontrol()
                case "xsc",local R_XSC=This[I,array] This[I,stcontrol]=This[J,stcontrol] This[J,array]=R_XSC break
#endif
                case "s",local R_S=This[I,array] This[I,string]=This[J,string] This[J,array]=R_S break
                case "t",local R_T=This[I,array] This[I,table]=This[J,table] This[J,array]=R_T break
#ifdef table:popTracedata()
                case "xtd",local R_XTD=This[I,array] This[I,tracedata]=This[J,tracedata] This[J,array]=R_XTD break
#endif
                case "v",local R_V=This[I,array] This[I,vector]=This[J,vector] This[J,array]=R_V break
                case "xv2",local R_XV2=This[I,array] This[I,vector2]=This[J,vector2] This[J,array]=R_XV2 break
                case "xv4",local R_XV4=This[I,array] This[I,vector4]=This[J,vector4] This[J,array]=R_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local R_XWM=This[I,array] This[I,webmaterial]=This[J,webmaterial] This[J,array]=R_XWM break
#endif
                case "xwl",local R_XWL=This[I,array] This[I,wirelink]=This[J,wirelink] This[J,array]=R_XWL break
            } break
#ifdef table:popAttachment()
            case "xat",switch(D[J,string]){
                case "a",local XAT_A=This[I,attachment] This[I,angle]=This[J,angle] This[J,attachment]=XAT_A break
                case "r",local XAT_R=This[I,attachment] This[I,array]=This[J,array] This[J,attachment]=XAT_R break
                case "xat",local XAT_XAT=This[I,attachment] This[I,attachment]=This[J,attachment] This[J,attachment]=XAT_XAT break
                case "b",local XAT_B=This[I,attachment] This[I,bone]=This[J,bone] This[J,attachment]=XAT_B break
#ifdef table:popCollision()
                case "xcl",local XAT_XCL=This[I,attachment] This[I,collision]=This[J,collision] This[J,attachment]=XAT_XCL break
#endif
                case "c",local XAT_C=This[I,attachment] This[I,complex]=This[J,complex] This[J,attachment]=XAT_C break
#ifdef table:popCoroutine()
                case "xco",local XAT_XCO=This[I,attachment] This[I,coroutine]=This[J,coroutine] This[J,attachment]=XAT_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XAT_XCR=This[I,attachment] This[I,curve]=This[J,curve] This[J,attachment]=XAT_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XAT_XDM=This[I,attachment] This[I,damage]=This[J,damage] This[J,attachment]=XAT_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XAT_XEF=This[I,attachment] This[I,effect]=This[J,effect] This[J,attachment]=XAT_XEF break
#endif
                case "e",local XAT_E=This[I,attachment] This[I,entity]=This[J,entity] This[J,attachment]=XAT_E break
#ifdef table:popFtrace()
                case "xft",local XAT_XFT=This[I,attachment] This[I,ftrace]=This[J,ftrace] This[J,attachment]=XAT_XFT break
#endif
                case "m",local XAT_M=This[I,attachment] This[I,matrix]=This[J,matrix] This[J,attachment]=XAT_M break
                case "xm2",local XAT_XM2=This[I,attachment] This[I,matrix2]=This[J,matrix2] This[J,attachment]=XAT_XM2 break
                case "xm4",local XAT_XM4=This[I,attachment] This[I,matrix4]=This[J,matrix4] This[J,attachment]=XAT_XM4 break
                case "n",local XAT_N=This[I,attachment] This[I,number]=This[J,number] This[J,attachment]=XAT_N break
                case "q",local XAT_Q=This[I,attachment] This[I,quaternion]=This[J,quaternion] This[J,attachment]=XAT_Q break
                case "xrd",local XAT_XRD=This[I,attachment] This[I,ranger]=This[J,ranger] This[J,attachment]=XAT_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XAT_XSC=This[I,attachment] This[I,stcontrol]=This[J,stcontrol] This[J,attachment]=XAT_XSC break
#endif
                case "s",local XAT_S=This[I,attachment] This[I,string]=This[J,string] This[J,attachment]=XAT_S break
                case "t",local XAT_T=This[I,attachment] This[I,table]=This[J,table] This[J,attachment]=XAT_T break
#ifdef table:popTracedata()
                case "xtd",local XAT_XTD=This[I,attachment] This[I,tracedata]=This[J,tracedata] This[J,attachment]=XAT_XTD break
#endif
                case "v",local XAT_V=This[I,attachment] This[I,vector]=This[J,vector] This[J,attachment]=XAT_V break
                case "xv2",local XAT_XV2=This[I,attachment] This[I,vector2]=This[J,vector2] This[J,attachment]=XAT_XV2 break
                case "xv4",local XAT_XV4=This[I,attachment] This[I,vector4]=This[J,vector4] This[J,attachment]=XAT_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XAT_XWM=This[I,attachment] This[I,webmaterial]=This[J,webmaterial] This[J,attachment]=XAT_XWM break
#endif
                case "xwl",local XAT_XWL=This[I,attachment] This[I,wirelink]=This[J,wirelink] This[J,attachment]=XAT_XWL break
            } break
#endif
            case "b",switch(D[J,string]){
                case "a",local B_A=This[I,bone] This[I,angle]=This[J,angle] This[J,bone]=B_A break
                case "r",local B_R=This[I,bone] This[I,array]=This[J,array] This[J,bone]=B_R break
#ifdef table:popAttachment()
                case "xat",local B_XAT=This[I,bone] This[I,attachment]=This[J,attachment] This[J,bone]=B_XAT break
#endif
                case "b",local B_B=This[I,bone] This[I,bone]=This[J,bone] This[J,bone]=B_B break
#ifdef table:popCollision()
                case "xcl",local B_XCL=This[I,bone] This[I,collision]=This[J,collision] This[J,bone]=B_XCL break
#endif
                case "c",local B_C=This[I,bone] This[I,complex]=This[J,complex] This[J,bone]=B_C break
#ifdef table:popCoroutine()
                case "xco",local B_XCO=This[I,bone] This[I,coroutine]=This[J,coroutine] This[J,bone]=B_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local B_XCR=This[I,bone] This[I,curve]=This[J,curve] This[J,bone]=B_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local B_XDM=This[I,bone] This[I,damage]=This[J,damage] This[J,bone]=B_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local B_XEF=This[I,bone] This[I,effect]=This[J,effect] This[J,bone]=B_XEF break
#endif
                case "e",local B_E=This[I,bone] This[I,entity]=This[J,entity] This[J,bone]=B_E break
#ifdef table:popFtrace()
                case "xft",local B_XFT=This[I,bone] This[I,ftrace]=This[J,ftrace] This[J,bone]=B_XFT break
#endif
                case "m",local B_M=This[I,bone] This[I,matrix]=This[J,matrix] This[J,bone]=B_M break
                case "xm2",local B_XM2=This[I,bone] This[I,matrix2]=This[J,matrix2] This[J,bone]=B_XM2 break
                case "xm4",local B_XM4=This[I,bone] This[I,matrix4]=This[J,matrix4] This[J,bone]=B_XM4 break
                case "n",local B_N=This[I,bone] This[I,number]=This[J,number] This[J,bone]=B_N break
                case "q",local B_Q=This[I,bone] This[I,quaternion]=This[J,quaternion] This[J,bone]=B_Q break
                case "xrd",local B_XRD=This[I,bone] This[I,ranger]=This[J,ranger] This[J,bone]=B_XRD break
#ifdef table:popStcontrol()
                case "xsc",local B_XSC=This[I,bone] This[I,stcontrol]=This[J,stcontrol] This[J,bone]=B_XSC break
#endif
                case "s",local B_S=This[I,bone] This[I,string]=This[J,string] This[J,bone]=B_S break
                case "t",local B_T=This[I,bone] This[I,table]=This[J,table] This[J,bone]=B_T break
#ifdef table:popTracedata()
                case "xtd",local B_XTD=This[I,bone] This[I,tracedata]=This[J,tracedata] This[J,bone]=B_XTD break
#endif
                case "v",local B_V=This[I,bone] This[I,vector]=This[J,vector] This[J,bone]=B_V break
                case "xv2",local B_XV2=This[I,bone] This[I,vector2]=This[J,vector2] This[J,bone]=B_XV2 break
                case "xv4",local B_XV4=This[I,bone] This[I,vector4]=This[J,vector4] This[J,bone]=B_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local B_XWM=This[I,bone] This[I,webmaterial]=This[J,webmaterial] This[J,bone]=B_XWM break
#endif
                case "xwl",local B_XWL=This[I,bone] This[I,wirelink]=This[J,wirelink] This[J,bone]=B_XWL break
            } break
#ifdef table:popCollision()
            case "xcl",switch(D[J,string]){
                case "a",local XCL_A=This[I,collision] This[I,angle]=This[J,angle] This[J,collision]=XCL_A break
                case "r",local XCL_R=This[I,collision] This[I,array]=This[J,array] This[J,collision]=XCL_R break
#ifdef table:popAttachment()
                case "xat",local XCL_XAT=This[I,collision] This[I,attachment]=This[J,attachment] This[J,collision]=XCL_XAT break
#endif
                case "b",local XCL_B=This[I,collision] This[I,bone]=This[J,bone] This[J,collision]=XCL_B break
                case "xcl",local XCL_XCL=This[I,collision] This[I,collision]=This[J,collision] This[J,collision]=XCL_XCL break
                case "c",local XCL_C=This[I,collision] This[I,complex]=This[J,complex] This[J,collision]=XCL_C break
#ifdef table:popCoroutine()
                case "xco",local XCL_XCO=This[I,collision] This[I,coroutine]=This[J,coroutine] This[J,collision]=XCL_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XCL_XCR=This[I,collision] This[I,curve]=This[J,curve] This[J,collision]=XCL_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XCL_XDM=This[I,collision] This[I,damage]=This[J,damage] This[J,collision]=XCL_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XCL_XEF=This[I,collision] This[I,effect]=This[J,effect] This[J,collision]=XCL_XEF break
#endif
                case "e",local XCL_E=This[I,collision] This[I,entity]=This[J,entity] This[J,collision]=XCL_E break
#ifdef table:popFtrace()
                case "xft",local XCL_XFT=This[I,collision] This[I,ftrace]=This[J,ftrace] This[J,collision]=XCL_XFT break
#endif
                case "m",local XCL_M=This[I,collision] This[I,matrix]=This[J,matrix] This[J,collision]=XCL_M break
                case "xm2",local XCL_XM2=This[I,collision] This[I,matrix2]=This[J,matrix2] This[J,collision]=XCL_XM2 break
                case "xm4",local XCL_XM4=This[I,collision] This[I,matrix4]=This[J,matrix4] This[J,collision]=XCL_XM4 break
                case "n",local XCL_N=This[I,collision] This[I,number]=This[J,number] This[J,collision]=XCL_N break
                case "q",local XCL_Q=This[I,collision] This[I,quaternion]=This[J,quaternion] This[J,collision]=XCL_Q break
                case "xrd",local XCL_XRD=This[I,collision] This[I,ranger]=This[J,ranger] This[J,collision]=XCL_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XCL_XSC=This[I,collision] This[I,stcontrol]=This[J,stcontrol] This[J,collision]=XCL_XSC break
#endif
                case "s",local XCL_S=This[I,collision] This[I,string]=This[J,string] This[J,collision]=XCL_S break
                case "t",local XCL_T=This[I,collision] This[I,table]=This[J,table] This[J,collision]=XCL_T break
#ifdef table:popTracedata()
                case "xtd",local XCL_XTD=This[I,collision] This[I,tracedata]=This[J,tracedata] This[J,collision]=XCL_XTD break
#endif
                case "v",local XCL_V=This[I,collision] This[I,vector]=This[J,vector] This[J,collision]=XCL_V break
                case "xv2",local XCL_XV2=This[I,collision] This[I,vector2]=This[J,vector2] This[J,collision]=XCL_XV2 break
                case "xv4",local XCL_XV4=This[I,collision] This[I,vector4]=This[J,vector4] This[J,collision]=XCL_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XCL_XWM=This[I,collision] This[I,webmaterial]=This[J,webmaterial] This[J,collision]=XCL_XWM break
#endif
                case "xwl",local XCL_XWL=This[I,collision] This[I,wirelink]=This[J,wirelink] This[J,collision]=XCL_XWL break
            } break
#endif
            case "c",switch(D[J,string]){
                case "a",local C_A=This[I,complex] This[I,angle]=This[J,angle] This[J,complex]=C_A break
                case "r",local C_R=This[I,complex] This[I,array]=This[J,array] This[J,complex]=C_R break
#ifdef table:popAttachment()
                case "xat",local C_XAT=This[I,complex] This[I,attachment]=This[J,attachment] This[J,complex]=C_XAT break
#endif
                case "b",local C_B=This[I,complex] This[I,bone]=This[J,bone] This[J,complex]=C_B break
#ifdef table:popCollision()
                case "xcl",local C_XCL=This[I,complex] This[I,collision]=This[J,collision] This[J,complex]=C_XCL break
#endif
                case "c",local C_C=This[I,complex] This[I,complex]=This[J,complex] This[J,complex]=C_C break
#ifdef table:popCoroutine()
                case "xco",local C_XCO=This[I,complex] This[I,coroutine]=This[J,coroutine] This[J,complex]=C_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local C_XCR=This[I,complex] This[I,curve]=This[J,curve] This[J,complex]=C_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local C_XDM=This[I,complex] This[I,damage]=This[J,damage] This[J,complex]=C_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local C_XEF=This[I,complex] This[I,effect]=This[J,effect] This[J,complex]=C_XEF break
#endif
                case "e",local C_E=This[I,complex] This[I,entity]=This[J,entity] This[J,complex]=C_E break
#ifdef table:popFtrace()
                case "xft",local C_XFT=This[I,complex] This[I,ftrace]=This[J,ftrace] This[J,complex]=C_XFT break
#endif
                case "m",local C_M=This[I,complex] This[I,matrix]=This[J,matrix] This[J,complex]=C_M break
                case "xm2",local C_XM2=This[I,complex] This[I,matrix2]=This[J,matrix2] This[J,complex]=C_XM2 break
                case "xm4",local C_XM4=This[I,complex] This[I,matrix4]=This[J,matrix4] This[J,complex]=C_XM4 break
                case "n",local C_N=This[I,complex] This[I,number]=This[J,number] This[J,complex]=C_N break
                case "q",local C_Q=This[I,complex] This[I,quaternion]=This[J,quaternion] This[J,complex]=C_Q break
                case "xrd",local C_XRD=This[I,complex] This[I,ranger]=This[J,ranger] This[J,complex]=C_XRD break
#ifdef table:popStcontrol()
                case "xsc",local C_XSC=This[I,complex] This[I,stcontrol]=This[J,stcontrol] This[J,complex]=C_XSC break
#endif
                case "s",local C_S=This[I,complex] This[I,string]=This[J,string] This[J,complex]=C_S break
                case "t",local C_T=This[I,complex] This[I,table]=This[J,table] This[J,complex]=C_T break
#ifdef table:popTracedata()
                case "xtd",local C_XTD=This[I,complex] This[I,tracedata]=This[J,tracedata] This[J,complex]=C_XTD break
#endif
                case "v",local C_V=This[I,complex] This[I,vector]=This[J,vector] This[J,complex]=C_V break
                case "xv2",local C_XV2=This[I,complex] This[I,vector2]=This[J,vector2] This[J,complex]=C_XV2 break
                case "xv4",local C_XV4=This[I,complex] This[I,vector4]=This[J,vector4] This[J,complex]=C_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local C_XWM=This[I,complex] This[I,webmaterial]=This[J,webmaterial] This[J,complex]=C_XWM break
#endif
                case "xwl",local C_XWL=This[I,complex] This[I,wirelink]=This[J,wirelink] This[J,complex]=C_XWL break
            } break
#ifdef table:popCoroutine()
            case "xco",switch(D[J,string]){
                case "a",local XCO_A=This[I,coroutine] This[I,angle]=This[J,angle] This[J,coroutine]=XCO_A break
                case "r",local XCO_R=This[I,coroutine] This[I,array]=This[J,array] This[J,coroutine]=XCO_R break
#ifdef table:popAttachment()
                case "xat",local XCO_XAT=This[I,coroutine] This[I,attachment]=This[J,attachment] This[J,coroutine]=XCO_XAT break
#endif
                case "b",local XCO_B=This[I,coroutine] This[I,bone]=This[J,bone] This[J,coroutine]=XCO_B break
#ifdef table:popCollision()
                case "xcl",local XCO_XCL=This[I,coroutine] This[I,collision]=This[J,collision] This[J,coroutine]=XCO_XCL break
#endif
                case "c",local XCO_C=This[I,coroutine] This[I,complex]=This[J,complex] This[J,coroutine]=XCO_C break
                case "xco",local XCO_XCO=This[I,coroutine] This[I,coroutine]=This[J,coroutine] This[J,coroutine]=XCO_XCO break
#ifdef table:popCurve()
                case "xcr",local XCO_XCR=This[I,coroutine] This[I,curve]=This[J,curve] This[J,coroutine]=XCO_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XCO_XDM=This[I,coroutine] This[I,damage]=This[J,damage] This[J,coroutine]=XCO_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XCO_XEF=This[I,coroutine] This[I,effect]=This[J,effect] This[J,coroutine]=XCO_XEF break
#endif
                case "e",local XCO_E=This[I,coroutine] This[I,entity]=This[J,entity] This[J,coroutine]=XCO_E break
#ifdef table:popFtrace()
                case "xft",local XCO_XFT=This[I,coroutine] This[I,ftrace]=This[J,ftrace] This[J,coroutine]=XCO_XFT break
#endif
                case "m",local XCO_M=This[I,coroutine] This[I,matrix]=This[J,matrix] This[J,coroutine]=XCO_M break
                case "xm2",local XCO_XM2=This[I,coroutine] This[I,matrix2]=This[J,matrix2] This[J,coroutine]=XCO_XM2 break
                case "xm4",local XCO_XM4=This[I,coroutine] This[I,matrix4]=This[J,matrix4] This[J,coroutine]=XCO_XM4 break
                case "n",local XCO_N=This[I,coroutine] This[I,number]=This[J,number] This[J,coroutine]=XCO_N break
                case "q",local XCO_Q=This[I,coroutine] This[I,quaternion]=This[J,quaternion] This[J,coroutine]=XCO_Q break
                case "xrd",local XCO_XRD=This[I,coroutine] This[I,ranger]=This[J,ranger] This[J,coroutine]=XCO_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XCO_XSC=This[I,coroutine] This[I,stcontrol]=This[J,stcontrol] This[J,coroutine]=XCO_XSC break
#endif
                case "s",local XCO_S=This[I,coroutine] This[I,string]=This[J,string] This[J,coroutine]=XCO_S break
                case "t",local XCO_T=This[I,coroutine] This[I,table]=This[J,table] This[J,coroutine]=XCO_T break
#ifdef table:popTracedata()
                case "xtd",local XCO_XTD=This[I,coroutine] This[I,tracedata]=This[J,tracedata] This[J,coroutine]=XCO_XTD break
#endif
                case "v",local XCO_V=This[I,coroutine] This[I,vector]=This[J,vector] This[J,coroutine]=XCO_V break
                case "xv2",local XCO_XV2=This[I,coroutine] This[I,vector2]=This[J,vector2] This[J,coroutine]=XCO_XV2 break
                case "xv4",local XCO_XV4=This[I,coroutine] This[I,vector4]=This[J,vector4] This[J,coroutine]=XCO_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XCO_XWM=This[I,coroutine] This[I,webmaterial]=This[J,webmaterial] This[J,coroutine]=XCO_XWM break
#endif
                case "xwl",local XCO_XWL=This[I,coroutine] This[I,wirelink]=This[J,wirelink] This[J,coroutine]=XCO_XWL break
            } break
#endif
#ifdef table:popCurve()
            case "xcr",switch(D[J,string]){
                case "a",local XCR_A=This[I,curve] This[I,angle]=This[J,angle] This[J,curve]=XCR_A break
                case "r",local XCR_R=This[I,curve] This[I,array]=This[J,array] This[J,curve]=XCR_R break
#ifdef table:popAttachment()
                case "xat",local XCR_XAT=This[I,curve] This[I,attachment]=This[J,attachment] This[J,curve]=XCR_XAT break
#endif
                case "b",local XCR_B=This[I,curve] This[I,bone]=This[J,bone] This[J,curve]=XCR_B break
#ifdef table:popCollision()
                case "xcl",local XCR_XCL=This[I,curve] This[I,collision]=This[J,collision] This[J,curve]=XCR_XCL break
#endif
                case "c",local XCR_C=This[I,curve] This[I,complex]=This[J,complex] This[J,curve]=XCR_C break
#ifdef table:popCoroutine()
                case "xco",local XCR_XCO=This[I,curve] This[I,coroutine]=This[J,coroutine] This[J,curve]=XCR_XCO break
#endif
                case "xcr",local XCR_XCR=This[I,curve] This[I,curve]=This[J,curve] This[J,curve]=XCR_XCR break
#ifdef table:popDamage()
                case "xdm",local XCR_XDM=This[I,curve] This[I,damage]=This[J,damage] This[J,curve]=XCR_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XCR_XEF=This[I,curve] This[I,effect]=This[J,effect] This[J,curve]=XCR_XEF break
#endif
                case "e",local XCR_E=This[I,curve] This[I,entity]=This[J,entity] This[J,curve]=XCR_E break
#ifdef table:popFtrace()
                case "xft",local XCR_XFT=This[I,curve] This[I,ftrace]=This[J,ftrace] This[J,curve]=XCR_XFT break
#endif
                case "m",local XCR_M=This[I,curve] This[I,matrix]=This[J,matrix] This[J,curve]=XCR_M break
                case "xm2",local XCR_XM2=This[I,curve] This[I,matrix2]=This[J,matrix2] This[J,curve]=XCR_XM2 break
                case "xm4",local XCR_XM4=This[I,curve] This[I,matrix4]=This[J,matrix4] This[J,curve]=XCR_XM4 break
                case "n",local XCR_N=This[I,curve] This[I,number]=This[J,number] This[J,curve]=XCR_N break
                case "q",local XCR_Q=This[I,curve] This[I,quaternion]=This[J,quaternion] This[J,curve]=XCR_Q break
                case "xrd",local XCR_XRD=This[I,curve] This[I,ranger]=This[J,ranger] This[J,curve]=XCR_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XCR_XSC=This[I,curve] This[I,stcontrol]=This[J,stcontrol] This[J,curve]=XCR_XSC break
#endif
                case "s",local XCR_S=This[I,curve] This[I,string]=This[J,string] This[J,curve]=XCR_S break
                case "t",local XCR_T=This[I,curve] This[I,table]=This[J,table] This[J,curve]=XCR_T break
#ifdef table:popTracedata()
                case "xtd",local XCR_XTD=This[I,curve] This[I,tracedata]=This[J,tracedata] This[J,curve]=XCR_XTD break
#endif
                case "v",local XCR_V=This[I,curve] This[I,vector]=This[J,vector] This[J,curve]=XCR_V break
                case "xv2",local XCR_XV2=This[I,curve] This[I,vector2]=This[J,vector2] This[J,curve]=XCR_XV2 break
                case "xv4",local XCR_XV4=This[I,curve] This[I,vector4]=This[J,vector4] This[J,curve]=XCR_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XCR_XWM=This[I,curve] This[I,webmaterial]=This[J,webmaterial] This[J,curve]=XCR_XWM break
#endif
                case "xwl",local XCR_XWL=This[I,curve] This[I,wirelink]=This[J,wirelink] This[J,curve]=XCR_XWL break
            } break
#endif
#ifdef table:popDamage()
            case "xdm",switch(D[J,string]){
                case "a",local XDM_A=This[I,damage] This[I,angle]=This[J,angle] This[J,damage]=XDM_A break
                case "r",local XDM_R=This[I,damage] This[I,array]=This[J,array] This[J,damage]=XDM_R break
#ifdef table:popAttachment()
                case "xat",local XDM_XAT=This[I,damage] This[I,attachment]=This[J,attachment] This[J,damage]=XDM_XAT break
#endif
                case "b",local XDM_B=This[I,damage] This[I,bone]=This[J,bone] This[J,damage]=XDM_B break
#ifdef table:popCollision()
                case "xcl",local XDM_XCL=This[I,damage] This[I,collision]=This[J,collision] This[J,damage]=XDM_XCL break
#endif
                case "c",local XDM_C=This[I,damage] This[I,complex]=This[J,complex] This[J,damage]=XDM_C break
#ifdef table:popCoroutine()
                case "xco",local XDM_XCO=This[I,damage] This[I,coroutine]=This[J,coroutine] This[J,damage]=XDM_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XDM_XCR=This[I,damage] This[I,curve]=This[J,curve] This[J,damage]=XDM_XCR break
#endif
                case "xdm",local XDM_XDM=This[I,damage] This[I,damage]=This[J,damage] This[J,damage]=XDM_XDM break
#ifdef table:popEffect()
                case "xef",local XDM_XEF=This[I,damage] This[I,effect]=This[J,effect] This[J,damage]=XDM_XEF break
#endif
                case "e",local XDM_E=This[I,damage] This[I,entity]=This[J,entity] This[J,damage]=XDM_E break
#ifdef table:popFtrace()
                case "xft",local XDM_XFT=This[I,damage] This[I,ftrace]=This[J,ftrace] This[J,damage]=XDM_XFT break
#endif
                case "m",local XDM_M=This[I,damage] This[I,matrix]=This[J,matrix] This[J,damage]=XDM_M break
                case "xm2",local XDM_XM2=This[I,damage] This[I,matrix2]=This[J,matrix2] This[J,damage]=XDM_XM2 break
                case "xm4",local XDM_XM4=This[I,damage] This[I,matrix4]=This[J,matrix4] This[J,damage]=XDM_XM4 break
                case "n",local XDM_N=This[I,damage] This[I,number]=This[J,number] This[J,damage]=XDM_N break
                case "q",local XDM_Q=This[I,damage] This[I,quaternion]=This[J,quaternion] This[J,damage]=XDM_Q break
                case "xrd",local XDM_XRD=This[I,damage] This[I,ranger]=This[J,ranger] This[J,damage]=XDM_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XDM_XSC=This[I,damage] This[I,stcontrol]=This[J,stcontrol] This[J,damage]=XDM_XSC break
#endif
                case "s",local XDM_S=This[I,damage] This[I,string]=This[J,string] This[J,damage]=XDM_S break
                case "t",local XDM_T=This[I,damage] This[I,table]=This[J,table] This[J,damage]=XDM_T break
#ifdef table:popTracedata()
                case "xtd",local XDM_XTD=This[I,damage] This[I,tracedata]=This[J,tracedata] This[J,damage]=XDM_XTD break
#endif
                case "v",local XDM_V=This[I,damage] This[I,vector]=This[J,vector] This[J,damage]=XDM_V break
                case "xv2",local XDM_XV2=This[I,damage] This[I,vector2]=This[J,vector2] This[J,damage]=XDM_XV2 break
                case "xv4",local XDM_XV4=This[I,damage] This[I,vector4]=This[J,vector4] This[J,damage]=XDM_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XDM_XWM=This[I,damage] This[I,webmaterial]=This[J,webmaterial] This[J,damage]=XDM_XWM break
#endif
                case "xwl",local XDM_XWL=This[I,damage] This[I,wirelink]=This[J,wirelink] This[J,damage]=XDM_XWL break
            } break
#endif
#ifdef table:popEffect()
            case "xef",switch(D[J,string]){
                case "a",local XEF_A=This[I,effect] This[I,angle]=This[J,angle] This[J,effect]=XEF_A break
                case "r",local XEF_R=This[I,effect] This[I,array]=This[J,array] This[J,effect]=XEF_R break
#ifdef table:popAttachment()
                case "xat",local XEF_XAT=This[I,effect] This[I,attachment]=This[J,attachment] This[J,effect]=XEF_XAT break
#endif
                case "b",local XEF_B=This[I,effect] This[I,bone]=This[J,bone] This[J,effect]=XEF_B break
#ifdef table:popCollision()
                case "xcl",local XEF_XCL=This[I,effect] This[I,collision]=This[J,collision] This[J,effect]=XEF_XCL break
#endif
                case "c",local XEF_C=This[I,effect] This[I,complex]=This[J,complex] This[J,effect]=XEF_C break
#ifdef table:popCoroutine()
                case "xco",local XEF_XCO=This[I,effect] This[I,coroutine]=This[J,coroutine] This[J,effect]=XEF_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XEF_XCR=This[I,effect] This[I,curve]=This[J,curve] This[J,effect]=XEF_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XEF_XDM=This[I,effect] This[I,damage]=This[J,damage] This[J,effect]=XEF_XDM break
#endif
                case "xef",local XEF_XEF=This[I,effect] This[I,effect]=This[J,effect] This[J,effect]=XEF_XEF break
                case "e",local XEF_E=This[I,effect] This[I,entity]=This[J,entity] This[J,effect]=XEF_E break
#ifdef table:popFtrace()
                case "xft",local XEF_XFT=This[I,effect] This[I,ftrace]=This[J,ftrace] This[J,effect]=XEF_XFT break
#endif
                case "m",local XEF_M=This[I,effect] This[I,matrix]=This[J,matrix] This[J,effect]=XEF_M break
                case "xm2",local XEF_XM2=This[I,effect] This[I,matrix2]=This[J,matrix2] This[J,effect]=XEF_XM2 break
                case "xm4",local XEF_XM4=This[I,effect] This[I,matrix4]=This[J,matrix4] This[J,effect]=XEF_XM4 break
                case "n",local XEF_N=This[I,effect] This[I,number]=This[J,number] This[J,effect]=XEF_N break
                case "q",local XEF_Q=This[I,effect] This[I,quaternion]=This[J,quaternion] This[J,effect]=XEF_Q break
                case "xrd",local XEF_XRD=This[I,effect] This[I,ranger]=This[J,ranger] This[J,effect]=XEF_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XEF_XSC=This[I,effect] This[I,stcontrol]=This[J,stcontrol] This[J,effect]=XEF_XSC break
#endif
                case "s",local XEF_S=This[I,effect] This[I,string]=This[J,string] This[J,effect]=XEF_S break
                case "t",local XEF_T=This[I,effect] This[I,table]=This[J,table] This[J,effect]=XEF_T break
#ifdef table:popTracedata()
                case "xtd",local XEF_XTD=This[I,effect] This[I,tracedata]=This[J,tracedata] This[J,effect]=XEF_XTD break
#endif
                case "v",local XEF_V=This[I,effect] This[I,vector]=This[J,vector] This[J,effect]=XEF_V break
                case "xv2",local XEF_XV2=This[I,effect] This[I,vector2]=This[J,vector2] This[J,effect]=XEF_XV2 break
                case "xv4",local XEF_XV4=This[I,effect] This[I,vector4]=This[J,vector4] This[J,effect]=XEF_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XEF_XWM=This[I,effect] This[I,webmaterial]=This[J,webmaterial] This[J,effect]=XEF_XWM break
#endif
                case "xwl",local XEF_XWL=This[I,effect] This[I,wirelink]=This[J,wirelink] This[J,effect]=XEF_XWL break
            } break
#endif
            case "e",switch(D[J,string]){
                case "a",local E_A=This[I,entity] This[I,angle]=This[J,angle] This[J,entity]=E_A break
                case "r",local E_R=This[I,entity] This[I,array]=This[J,array] This[J,entity]=E_R break
#ifdef table:popAttachment()
                case "xat",local E_XAT=This[I,entity] This[I,attachment]=This[J,attachment] This[J,entity]=E_XAT break
#endif
                case "b",local E_B=This[I,entity] This[I,bone]=This[J,bone] This[J,entity]=E_B break
#ifdef table:popCollision()
                case "xcl",local E_XCL=This[I,entity] This[I,collision]=This[J,collision] This[J,entity]=E_XCL break
#endif
                case "c",local E_C=This[I,entity] This[I,complex]=This[J,complex] This[J,entity]=E_C break
#ifdef table:popCoroutine()
                case "xco",local E_XCO=This[I,entity] This[I,coroutine]=This[J,coroutine] This[J,entity]=E_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local E_XCR=This[I,entity] This[I,curve]=This[J,curve] This[J,entity]=E_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local E_XDM=This[I,entity] This[I,damage]=This[J,damage] This[J,entity]=E_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local E_XEF=This[I,entity] This[I,effect]=This[J,effect] This[J,entity]=E_XEF break
#endif
                case "e",local E_E=This[I,entity] This[I,entity]=This[J,entity] This[J,entity]=E_E break
#ifdef table:popFtrace()
                case "xft",local E_XFT=This[I,entity] This[I,ftrace]=This[J,ftrace] This[J,entity]=E_XFT break
#endif
                case "m",local E_M=This[I,entity] This[I,matrix]=This[J,matrix] This[J,entity]=E_M break
                case "xm2",local E_XM2=This[I,entity] This[I,matrix2]=This[J,matrix2] This[J,entity]=E_XM2 break
                case "xm4",local E_XM4=This[I,entity] This[I,matrix4]=This[J,matrix4] This[J,entity]=E_XM4 break
                case "n",local E_N=This[I,entity] This[I,number]=This[J,number] This[J,entity]=E_N break
                case "q",local E_Q=This[I,entity] This[I,quaternion]=This[J,quaternion] This[J,entity]=E_Q break
                case "xrd",local E_XRD=This[I,entity] This[I,ranger]=This[J,ranger] This[J,entity]=E_XRD break
#ifdef table:popStcontrol()
                case "xsc",local E_XSC=This[I,entity] This[I,stcontrol]=This[J,stcontrol] This[J,entity]=E_XSC break
#endif
                case "s",local E_S=This[I,entity] This[I,string]=This[J,string] This[J,entity]=E_S break
                case "t",local E_T=This[I,entity] This[I,table]=This[J,table] This[J,entity]=E_T break
#ifdef table:popTracedata()
                case "xtd",local E_XTD=This[I,entity] This[I,tracedata]=This[J,tracedata] This[J,entity]=E_XTD break
#endif
                case "v",local E_V=This[I,entity] This[I,vector]=This[J,vector] This[J,entity]=E_V break
                case "xv2",local E_XV2=This[I,entity] This[I,vector2]=This[J,vector2] This[J,entity]=E_XV2 break
                case "xv4",local E_XV4=This[I,entity] This[I,vector4]=This[J,vector4] This[J,entity]=E_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local E_XWM=This[I,entity] This[I,webmaterial]=This[J,webmaterial] This[J,entity]=E_XWM break
#endif
                case "xwl",local E_XWL=This[I,entity] This[I,wirelink]=This[J,wirelink] This[J,entity]=E_XWL break
            } break
#ifdef table:popFtrace()
            case "xft",switch(D[J,string]){
                case "a",local XFT_A=This[I,ftrace] This[I,angle]=This[J,angle] This[J,ftrace]=XFT_A break
                case "r",local XFT_R=This[I,ftrace] This[I,array]=This[J,array] This[J,ftrace]=XFT_R break
#ifdef table:popAttachment()
                case "xat",local XFT_XAT=This[I,ftrace] This[I,attachment]=This[J,attachment] This[J,ftrace]=XFT_XAT break
#endif
                case "b",local XFT_B=This[I,ftrace] This[I,bone]=This[J,bone] This[J,ftrace]=XFT_B break
#ifdef table:popCollision()
                case "xcl",local XFT_XCL=This[I,ftrace] This[I,collision]=This[J,collision] This[J,ftrace]=XFT_XCL break
#endif
                case "c",local XFT_C=This[I,ftrace] This[I,complex]=This[J,complex] This[J,ftrace]=XFT_C break
#ifdef table:popCoroutine()
                case "xco",local XFT_XCO=This[I,ftrace] This[I,coroutine]=This[J,coroutine] This[J,ftrace]=XFT_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XFT_XCR=This[I,ftrace] This[I,curve]=This[J,curve] This[J,ftrace]=XFT_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XFT_XDM=This[I,ftrace] This[I,damage]=This[J,damage] This[J,ftrace]=XFT_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XFT_XEF=This[I,ftrace] This[I,effect]=This[J,effect] This[J,ftrace]=XFT_XEF break
#endif
                case "e",local XFT_E=This[I,ftrace] This[I,entity]=This[J,entity] This[J,ftrace]=XFT_E break
                case "xft",local XFT_XFT=This[I,ftrace] This[I,ftrace]=This[J,ftrace] This[J,ftrace]=XFT_XFT break
                case "m",local XFT_M=This[I,ftrace] This[I,matrix]=This[J,matrix] This[J,ftrace]=XFT_M break
                case "xm2",local XFT_XM2=This[I,ftrace] This[I,matrix2]=This[J,matrix2] This[J,ftrace]=XFT_XM2 break
                case "xm4",local XFT_XM4=This[I,ftrace] This[I,matrix4]=This[J,matrix4] This[J,ftrace]=XFT_XM4 break
                case "n",local XFT_N=This[I,ftrace] This[I,number]=This[J,number] This[J,ftrace]=XFT_N break
                case "q",local XFT_Q=This[I,ftrace] This[I,quaternion]=This[J,quaternion] This[J,ftrace]=XFT_Q break
                case "xrd",local XFT_XRD=This[I,ftrace] This[I,ranger]=This[J,ranger] This[J,ftrace]=XFT_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XFT_XSC=This[I,ftrace] This[I,stcontrol]=This[J,stcontrol] This[J,ftrace]=XFT_XSC break
#endif
                case "s",local XFT_S=This[I,ftrace] This[I,string]=This[J,string] This[J,ftrace]=XFT_S break
                case "t",local XFT_T=This[I,ftrace] This[I,table]=This[J,table] This[J,ftrace]=XFT_T break
#ifdef table:popTracedata()
                case "xtd",local XFT_XTD=This[I,ftrace] This[I,tracedata]=This[J,tracedata] This[J,ftrace]=XFT_XTD break
#endif
                case "v",local XFT_V=This[I,ftrace] This[I,vector]=This[J,vector] This[J,ftrace]=XFT_V break
                case "xv2",local XFT_XV2=This[I,ftrace] This[I,vector2]=This[J,vector2] This[J,ftrace]=XFT_XV2 break
                case "xv4",local XFT_XV4=This[I,ftrace] This[I,vector4]=This[J,vector4] This[J,ftrace]=XFT_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XFT_XWM=This[I,ftrace] This[I,webmaterial]=This[J,webmaterial] This[J,ftrace]=XFT_XWM break
#endif
                case "xwl",local XFT_XWL=This[I,ftrace] This[I,wirelink]=This[J,wirelink] This[J,ftrace]=XFT_XWL break
            } break
#endif
            case "m",switch(D[J,string]){
                case "a",local M_A=This[I,matrix] This[I,angle]=This[J,angle] This[J,matrix]=M_A break
                case "r",local M_R=This[I,matrix] This[I,array]=This[J,array] This[J,matrix]=M_R break
#ifdef table:popAttachment()
                case "xat",local M_XAT=This[I,matrix] This[I,attachment]=This[J,attachment] This[J,matrix]=M_XAT break
#endif
                case "b",local M_B=This[I,matrix] This[I,bone]=This[J,bone] This[J,matrix]=M_B break
#ifdef table:popCollision()
                case "xcl",local M_XCL=This[I,matrix] This[I,collision]=This[J,collision] This[J,matrix]=M_XCL break
#endif
                case "c",local M_C=This[I,matrix] This[I,complex]=This[J,complex] This[J,matrix]=M_C break
#ifdef table:popCoroutine()
                case "xco",local M_XCO=This[I,matrix] This[I,coroutine]=This[J,coroutine] This[J,matrix]=M_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local M_XCR=This[I,matrix] This[I,curve]=This[J,curve] This[J,matrix]=M_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local M_XDM=This[I,matrix] This[I,damage]=This[J,damage] This[J,matrix]=M_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local M_XEF=This[I,matrix] This[I,effect]=This[J,effect] This[J,matrix]=M_XEF break
#endif
                case "e",local M_E=This[I,matrix] This[I,entity]=This[J,entity] This[J,matrix]=M_E break
#ifdef table:popFtrace()
                case "xft",local M_XFT=This[I,matrix] This[I,ftrace]=This[J,ftrace] This[J,matrix]=M_XFT break
#endif
                case "m",local M_M=This[I,matrix] This[I,matrix]=This[J,matrix] This[J,matrix]=M_M break
                case "xm2",local M_XM2=This[I,matrix] This[I,matrix2]=This[J,matrix2] This[J,matrix]=M_XM2 break
                case "xm4",local M_XM4=This[I,matrix] This[I,matrix4]=This[J,matrix4] This[J,matrix]=M_XM4 break
                case "n",local M_N=This[I,matrix] This[I,number]=This[J,number] This[J,matrix]=M_N break
                case "q",local M_Q=This[I,matrix] This[I,quaternion]=This[J,quaternion] This[J,matrix]=M_Q break
                case "xrd",local M_XRD=This[I,matrix] This[I,ranger]=This[J,ranger] This[J,matrix]=M_XRD break
#ifdef table:popStcontrol()
                case "xsc",local M_XSC=This[I,matrix] This[I,stcontrol]=This[J,stcontrol] This[J,matrix]=M_XSC break
#endif
                case "s",local M_S=This[I,matrix] This[I,string]=This[J,string] This[J,matrix]=M_S break
                case "t",local M_T=This[I,matrix] This[I,table]=This[J,table] This[J,matrix]=M_T break
#ifdef table:popTracedata()
                case "xtd",local M_XTD=This[I,matrix] This[I,tracedata]=This[J,tracedata] This[J,matrix]=M_XTD break
#endif
                case "v",local M_V=This[I,matrix] This[I,vector]=This[J,vector] This[J,matrix]=M_V break
                case "xv2",local M_XV2=This[I,matrix] This[I,vector2]=This[J,vector2] This[J,matrix]=M_XV2 break
                case "xv4",local M_XV4=This[I,matrix] This[I,vector4]=This[J,vector4] This[J,matrix]=M_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local M_XWM=This[I,matrix] This[I,webmaterial]=This[J,webmaterial] This[J,matrix]=M_XWM break
#endif
                case "xwl",local M_XWL=This[I,matrix] This[I,wirelink]=This[J,wirelink] This[J,matrix]=M_XWL break
            } break
            case "xm2",switch(D[J,string]){
                case "a",local XM2_A=This[I,matrix2] This[I,angle]=This[J,angle] This[J,matrix2]=XM2_A break
                case "r",local XM2_R=This[I,matrix2] This[I,array]=This[J,array] This[J,matrix2]=XM2_R break
#ifdef table:popAttachment()
                case "xat",local XM2_XAT=This[I,matrix2] This[I,attachment]=This[J,attachment] This[J,matrix2]=XM2_XAT break
#endif
                case "b",local XM2_B=This[I,matrix2] This[I,bone]=This[J,bone] This[J,matrix2]=XM2_B break
#ifdef table:popCollision()
                case "xcl",local XM2_XCL=This[I,matrix2] This[I,collision]=This[J,collision] This[J,matrix2]=XM2_XCL break
#endif
                case "c",local XM2_C=This[I,matrix2] This[I,complex]=This[J,complex] This[J,matrix2]=XM2_C break
#ifdef table:popCoroutine()
                case "xco",local XM2_XCO=This[I,matrix2] This[I,coroutine]=This[J,coroutine] This[J,matrix2]=XM2_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XM2_XCR=This[I,matrix2] This[I,curve]=This[J,curve] This[J,matrix2]=XM2_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XM2_XDM=This[I,matrix2] This[I,damage]=This[J,damage] This[J,matrix2]=XM2_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XM2_XEF=This[I,matrix2] This[I,effect]=This[J,effect] This[J,matrix2]=XM2_XEF break
#endif
                case "e",local XM2_E=This[I,matrix2] This[I,entity]=This[J,entity] This[J,matrix2]=XM2_E break
#ifdef table:popFtrace()
                case "xft",local XM2_XFT=This[I,matrix2] This[I,ftrace]=This[J,ftrace] This[J,matrix2]=XM2_XFT break
#endif
                case "m",local XM2_M=This[I,matrix2] This[I,matrix]=This[J,matrix] This[J,matrix2]=XM2_M break
                case "xm2",local XM2_XM2=This[I,matrix2] This[I,matrix2]=This[J,matrix2] This[J,matrix2]=XM2_XM2 break
                case "xm4",local XM2_XM4=This[I,matrix2] This[I,matrix4]=This[J,matrix4] This[J,matrix2]=XM2_XM4 break
                case "n",local XM2_N=This[I,matrix2] This[I,number]=This[J,number] This[J,matrix2]=XM2_N break
                case "q",local XM2_Q=This[I,matrix2] This[I,quaternion]=This[J,quaternion] This[J,matrix2]=XM2_Q break
                case "xrd",local XM2_XRD=This[I,matrix2] This[I,ranger]=This[J,ranger] This[J,matrix2]=XM2_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XM2_XSC=This[I,matrix2] This[I,stcontrol]=This[J,stcontrol] This[J,matrix2]=XM2_XSC break
#endif
                case "s",local XM2_S=This[I,matrix2] This[I,string]=This[J,string] This[J,matrix2]=XM2_S break
                case "t",local XM2_T=This[I,matrix2] This[I,table]=This[J,table] This[J,matrix2]=XM2_T break
#ifdef table:popTracedata()
                case "xtd",local XM2_XTD=This[I,matrix2] This[I,tracedata]=This[J,tracedata] This[J,matrix2]=XM2_XTD break
#endif
                case "v",local XM2_V=This[I,matrix2] This[I,vector]=This[J,vector] This[J,matrix2]=XM2_V break
                case "xv2",local XM2_XV2=This[I,matrix2] This[I,vector2]=This[J,vector2] This[J,matrix2]=XM2_XV2 break
                case "xv4",local XM2_XV4=This[I,matrix2] This[I,vector4]=This[J,vector4] This[J,matrix2]=XM2_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XM2_XWM=This[I,matrix2] This[I,webmaterial]=This[J,webmaterial] This[J,matrix2]=XM2_XWM break
#endif
                case "xwl",local XM2_XWL=This[I,matrix2] This[I,wirelink]=This[J,wirelink] This[J,matrix2]=XM2_XWL break
            } break
            case "xm4",switch(D[J,string]){
                case "a",local XM4_A=This[I,matrix4] This[I,angle]=This[J,angle] This[J,matrix4]=XM4_A break
                case "r",local XM4_R=This[I,matrix4] This[I,array]=This[J,array] This[J,matrix4]=XM4_R break
#ifdef table:popAttachment()
                case "xat",local XM4_XAT=This[I,matrix4] This[I,attachment]=This[J,attachment] This[J,matrix4]=XM4_XAT break
#endif
                case "b",local XM4_B=This[I,matrix4] This[I,bone]=This[J,bone] This[J,matrix4]=XM4_B break
#ifdef table:popCollision()
                case "xcl",local XM4_XCL=This[I,matrix4] This[I,collision]=This[J,collision] This[J,matrix4]=XM4_XCL break
#endif
                case "c",local XM4_C=This[I,matrix4] This[I,complex]=This[J,complex] This[J,matrix4]=XM4_C break
#ifdef table:popCoroutine()
                case "xco",local XM4_XCO=This[I,matrix4] This[I,coroutine]=This[J,coroutine] This[J,matrix4]=XM4_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XM4_XCR=This[I,matrix4] This[I,curve]=This[J,curve] This[J,matrix4]=XM4_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XM4_XDM=This[I,matrix4] This[I,damage]=This[J,damage] This[J,matrix4]=XM4_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XM4_XEF=This[I,matrix4] This[I,effect]=This[J,effect] This[J,matrix4]=XM4_XEF break
#endif
                case "e",local XM4_E=This[I,matrix4] This[I,entity]=This[J,entity] This[J,matrix4]=XM4_E break
#ifdef table:popFtrace()
                case "xft",local XM4_XFT=This[I,matrix4] This[I,ftrace]=This[J,ftrace] This[J,matrix4]=XM4_XFT break
#endif
                case "m",local XM4_M=This[I,matrix4] This[I,matrix]=This[J,matrix] This[J,matrix4]=XM4_M break
                case "xm2",local XM4_XM2=This[I,matrix4] This[I,matrix2]=This[J,matrix2] This[J,matrix4]=XM4_XM2 break
                case "xm4",local XM4_XM4=This[I,matrix4] This[I,matrix4]=This[J,matrix4] This[J,matrix4]=XM4_XM4 break
                case "n",local XM4_N=This[I,matrix4] This[I,number]=This[J,number] This[J,matrix4]=XM4_N break
                case "q",local XM4_Q=This[I,matrix4] This[I,quaternion]=This[J,quaternion] This[J,matrix4]=XM4_Q break
                case "xrd",local XM4_XRD=This[I,matrix4] This[I,ranger]=This[J,ranger] This[J,matrix4]=XM4_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XM4_XSC=This[I,matrix4] This[I,stcontrol]=This[J,stcontrol] This[J,matrix4]=XM4_XSC break
#endif
                case "s",local XM4_S=This[I,matrix4] This[I,string]=This[J,string] This[J,matrix4]=XM4_S break
                case "t",local XM4_T=This[I,matrix4] This[I,table]=This[J,table] This[J,matrix4]=XM4_T break
#ifdef table:popTracedata()
                case "xtd",local XM4_XTD=This[I,matrix4] This[I,tracedata]=This[J,tracedata] This[J,matrix4]=XM4_XTD break
#endif
                case "v",local XM4_V=This[I,matrix4] This[I,vector]=This[J,vector] This[J,matrix4]=XM4_V break
                case "xv2",local XM4_XV2=This[I,matrix4] This[I,vector2]=This[J,vector2] This[J,matrix4]=XM4_XV2 break
                case "xv4",local XM4_XV4=This[I,matrix4] This[I,vector4]=This[J,vector4] This[J,matrix4]=XM4_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XM4_XWM=This[I,matrix4] This[I,webmaterial]=This[J,webmaterial] This[J,matrix4]=XM4_XWM break
#endif
                case "xwl",local XM4_XWL=This[I,matrix4] This[I,wirelink]=This[J,wirelink] This[J,matrix4]=XM4_XWL break
            } break
            case "n",switch(D[J,string]){
                case "a",local N_A=This[I,number] This[I,angle]=This[J,angle] This[J,number]=N_A break
                case "r",local N_R=This[I,number] This[I,array]=This[J,array] This[J,number]=N_R break
#ifdef table:popAttachment()
                case "xat",local N_XAT=This[I,number] This[I,attachment]=This[J,attachment] This[J,number]=N_XAT break
#endif
                case "b",local N_B=This[I,number] This[I,bone]=This[J,bone] This[J,number]=N_B break
#ifdef table:popCollision()
                case "xcl",local N_XCL=This[I,number] This[I,collision]=This[J,collision] This[J,number]=N_XCL break
#endif
                case "c",local N_C=This[I,number] This[I,complex]=This[J,complex] This[J,number]=N_C break
#ifdef table:popCoroutine()
                case "xco",local N_XCO=This[I,number] This[I,coroutine]=This[J,coroutine] This[J,number]=N_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local N_XCR=This[I,number] This[I,curve]=This[J,curve] This[J,number]=N_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local N_XDM=This[I,number] This[I,damage]=This[J,damage] This[J,number]=N_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local N_XEF=This[I,number] This[I,effect]=This[J,effect] This[J,number]=N_XEF break
#endif
                case "e",local N_E=This[I,number] This[I,entity]=This[J,entity] This[J,number]=N_E break
#ifdef table:popFtrace()
                case "xft",local N_XFT=This[I,number] This[I,ftrace]=This[J,ftrace] This[J,number]=N_XFT break
#endif
                case "m",local N_M=This[I,number] This[I,matrix]=This[J,matrix] This[J,number]=N_M break
                case "xm2",local N_XM2=This[I,number] This[I,matrix2]=This[J,matrix2] This[J,number]=N_XM2 break
                case "xm4",local N_XM4=This[I,number] This[I,matrix4]=This[J,matrix4] This[J,number]=N_XM4 break
                case "n",local N_N=This[I,number] This[I,number]=This[J,number] This[J,number]=N_N break
                case "q",local N_Q=This[I,number] This[I,quaternion]=This[J,quaternion] This[J,number]=N_Q break
                case "xrd",local N_XRD=This[I,number] This[I,ranger]=This[J,ranger] This[J,number]=N_XRD break
#ifdef table:popStcontrol()
                case "xsc",local N_XSC=This[I,number] This[I,stcontrol]=This[J,stcontrol] This[J,number]=N_XSC break
#endif
                case "s",local N_S=This[I,number] This[I,string]=This[J,string] This[J,number]=N_S break
                case "t",local N_T=This[I,number] This[I,table]=This[J,table] This[J,number]=N_T break
#ifdef table:popTracedata()
                case "xtd",local N_XTD=This[I,number] This[I,tracedata]=This[J,tracedata] This[J,number]=N_XTD break
#endif
                case "v",local N_V=This[I,number] This[I,vector]=This[J,vector] This[J,number]=N_V break
                case "xv2",local N_XV2=This[I,number] This[I,vector2]=This[J,vector2] This[J,number]=N_XV2 break
                case "xv4",local N_XV4=This[I,number] This[I,vector4]=This[J,vector4] This[J,number]=N_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local N_XWM=This[I,number] This[I,webmaterial]=This[J,webmaterial] This[J,number]=N_XWM break
#endif
                case "xwl",local N_XWL=This[I,number] This[I,wirelink]=This[J,wirelink] This[J,number]=N_XWL break
            } break
            case "q",switch(D[J,string]){
                case "a",local Q_A=This[I,quaternion] This[I,angle]=This[J,angle] This[J,quaternion]=Q_A break
                case "r",local Q_R=This[I,quaternion] This[I,array]=This[J,array] This[J,quaternion]=Q_R break
#ifdef table:popAttachment()
                case "xat",local Q_XAT=This[I,quaternion] This[I,attachment]=This[J,attachment] This[J,quaternion]=Q_XAT break
#endif
                case "b",local Q_B=This[I,quaternion] This[I,bone]=This[J,bone] This[J,quaternion]=Q_B break
#ifdef table:popCollision()
                case "xcl",local Q_XCL=This[I,quaternion] This[I,collision]=This[J,collision] This[J,quaternion]=Q_XCL break
#endif
                case "c",local Q_C=This[I,quaternion] This[I,complex]=This[J,complex] This[J,quaternion]=Q_C break
#ifdef table:popCoroutine()
                case "xco",local Q_XCO=This[I,quaternion] This[I,coroutine]=This[J,coroutine] This[J,quaternion]=Q_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local Q_XCR=This[I,quaternion] This[I,curve]=This[J,curve] This[J,quaternion]=Q_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local Q_XDM=This[I,quaternion] This[I,damage]=This[J,damage] This[J,quaternion]=Q_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local Q_XEF=This[I,quaternion] This[I,effect]=This[J,effect] This[J,quaternion]=Q_XEF break
#endif
                case "e",local Q_E=This[I,quaternion] This[I,entity]=This[J,entity] This[J,quaternion]=Q_E break
#ifdef table:popFtrace()
                case "xft",local Q_XFT=This[I,quaternion] This[I,ftrace]=This[J,ftrace] This[J,quaternion]=Q_XFT break
#endif
                case "m",local Q_M=This[I,quaternion] This[I,matrix]=This[J,matrix] This[J,quaternion]=Q_M break
                case "xm2",local Q_XM2=This[I,quaternion] This[I,matrix2]=This[J,matrix2] This[J,quaternion]=Q_XM2 break
                case "xm4",local Q_XM4=This[I,quaternion] This[I,matrix4]=This[J,matrix4] This[J,quaternion]=Q_XM4 break
                case "n",local Q_N=This[I,quaternion] This[I,number]=This[J,number] This[J,quaternion]=Q_N break
                case "q",local Q_Q=This[I,quaternion] This[I,quaternion]=This[J,quaternion] This[J,quaternion]=Q_Q break
                case "xrd",local Q_XRD=This[I,quaternion] This[I,ranger]=This[J,ranger] This[J,quaternion]=Q_XRD break
#ifdef table:popStcontrol()
                case "xsc",local Q_XSC=This[I,quaternion] This[I,stcontrol]=This[J,stcontrol] This[J,quaternion]=Q_XSC break
#endif
                case "s",local Q_S=This[I,quaternion] This[I,string]=This[J,string] This[J,quaternion]=Q_S break
                case "t",local Q_T=This[I,quaternion] This[I,table]=This[J,table] This[J,quaternion]=Q_T break
#ifdef table:popTracedata()
                case "xtd",local Q_XTD=This[I,quaternion] This[I,tracedata]=This[J,tracedata] This[J,quaternion]=Q_XTD break
#endif
                case "v",local Q_V=This[I,quaternion] This[I,vector]=This[J,vector] This[J,quaternion]=Q_V break
                case "xv2",local Q_XV2=This[I,quaternion] This[I,vector2]=This[J,vector2] This[J,quaternion]=Q_XV2 break
                case "xv4",local Q_XV4=This[I,quaternion] This[I,vector4]=This[J,vector4] This[J,quaternion]=Q_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local Q_XWM=This[I,quaternion] This[I,webmaterial]=This[J,webmaterial] This[J,quaternion]=Q_XWM break
#endif
                case "xwl",local Q_XWL=This[I,quaternion] This[I,wirelink]=This[J,wirelink] This[J,quaternion]=Q_XWL break
            } break
            case "xrd",switch(D[J,string]){
                case "a",local XRD_A=This[I,ranger] This[I,angle]=This[J,angle] This[J,ranger]=XRD_A break
                case "r",local XRD_R=This[I,ranger] This[I,array]=This[J,array] This[J,ranger]=XRD_R break
#ifdef table:popAttachment()
                case "xat",local XRD_XAT=This[I,ranger] This[I,attachment]=This[J,attachment] This[J,ranger]=XRD_XAT break
#endif
                case "b",local XRD_B=This[I,ranger] This[I,bone]=This[J,bone] This[J,ranger]=XRD_B break
#ifdef table:popCollision()
                case "xcl",local XRD_XCL=This[I,ranger] This[I,collision]=This[J,collision] This[J,ranger]=XRD_XCL break
#endif
                case "c",local XRD_C=This[I,ranger] This[I,complex]=This[J,complex] This[J,ranger]=XRD_C break
#ifdef table:popCoroutine()
                case "xco",local XRD_XCO=This[I,ranger] This[I,coroutine]=This[J,coroutine] This[J,ranger]=XRD_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XRD_XCR=This[I,ranger] This[I,curve]=This[J,curve] This[J,ranger]=XRD_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XRD_XDM=This[I,ranger] This[I,damage]=This[J,damage] This[J,ranger]=XRD_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XRD_XEF=This[I,ranger] This[I,effect]=This[J,effect] This[J,ranger]=XRD_XEF break
#endif
                case "e",local XRD_E=This[I,ranger] This[I,entity]=This[J,entity] This[J,ranger]=XRD_E break
#ifdef table:popFtrace()
                case "xft",local XRD_XFT=This[I,ranger] This[I,ftrace]=This[J,ftrace] This[J,ranger]=XRD_XFT break
#endif
                case "m",local XRD_M=This[I,ranger] This[I,matrix]=This[J,matrix] This[J,ranger]=XRD_M break
                case "xm2",local XRD_XM2=This[I,ranger] This[I,matrix2]=This[J,matrix2] This[J,ranger]=XRD_XM2 break
                case "xm4",local XRD_XM4=This[I,ranger] This[I,matrix4]=This[J,matrix4] This[J,ranger]=XRD_XM4 break
                case "n",local XRD_N=This[I,ranger] This[I,number]=This[J,number] This[J,ranger]=XRD_N break
                case "q",local XRD_Q=This[I,ranger] This[I,quaternion]=This[J,quaternion] This[J,ranger]=XRD_Q break
                case "xrd",local XRD_XRD=This[I,ranger] This[I,ranger]=This[J,ranger] This[J,ranger]=XRD_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XRD_XSC=This[I,ranger] This[I,stcontrol]=This[J,stcontrol] This[J,ranger]=XRD_XSC break
#endif
                case "s",local XRD_S=This[I,ranger] This[I,string]=This[J,string] This[J,ranger]=XRD_S break
                case "t",local XRD_T=This[I,ranger] This[I,table]=This[J,table] This[J,ranger]=XRD_T break
#ifdef table:popTracedata()
                case "xtd",local XRD_XTD=This[I,ranger] This[I,tracedata]=This[J,tracedata] This[J,ranger]=XRD_XTD break
#endif
                case "v",local XRD_V=This[I,ranger] This[I,vector]=This[J,vector] This[J,ranger]=XRD_V break
                case "xv2",local XRD_XV2=This[I,ranger] This[I,vector2]=This[J,vector2] This[J,ranger]=XRD_XV2 break
                case "xv4",local XRD_XV4=This[I,ranger] This[I,vector4]=This[J,vector4] This[J,ranger]=XRD_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XRD_XWM=This[I,ranger] This[I,webmaterial]=This[J,webmaterial] This[J,ranger]=XRD_XWM break
#endif
                case "xwl",local XRD_XWL=This[I,ranger] This[I,wirelink]=This[J,wirelink] This[J,ranger]=XRD_XWL break
            } break
#ifdef table:popStcontrol()
            case "xsc",switch(D[J,string]){
                case "a",local XSC_A=This[I,stcontrol] This[I,angle]=This[J,angle] This[J,stcontrol]=XSC_A break
                case "r",local XSC_R=This[I,stcontrol] This[I,array]=This[J,array] This[J,stcontrol]=XSC_R break
#ifdef table:popAttachment()
                case "xat",local XSC_XAT=This[I,stcontrol] This[I,attachment]=This[J,attachment] This[J,stcontrol]=XSC_XAT break
#endif
                case "b",local XSC_B=This[I,stcontrol] This[I,bone]=This[J,bone] This[J,stcontrol]=XSC_B break
#ifdef table:popCollision()
                case "xcl",local XSC_XCL=This[I,stcontrol] This[I,collision]=This[J,collision] This[J,stcontrol]=XSC_XCL break
#endif
                case "c",local XSC_C=This[I,stcontrol] This[I,complex]=This[J,complex] This[J,stcontrol]=XSC_C break
#ifdef table:popCoroutine()
                case "xco",local XSC_XCO=This[I,stcontrol] This[I,coroutine]=This[J,coroutine] This[J,stcontrol]=XSC_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XSC_XCR=This[I,stcontrol] This[I,curve]=This[J,curve] This[J,stcontrol]=XSC_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XSC_XDM=This[I,stcontrol] This[I,damage]=This[J,damage] This[J,stcontrol]=XSC_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XSC_XEF=This[I,stcontrol] This[I,effect]=This[J,effect] This[J,stcontrol]=XSC_XEF break
#endif
                case "e",local XSC_E=This[I,stcontrol] This[I,entity]=This[J,entity] This[J,stcontrol]=XSC_E break
#ifdef table:popFtrace()
                case "xft",local XSC_XFT=This[I,stcontrol] This[I,ftrace]=This[J,ftrace] This[J,stcontrol]=XSC_XFT break
#endif
                case "m",local XSC_M=This[I,stcontrol] This[I,matrix]=This[J,matrix] This[J,stcontrol]=XSC_M break
                case "xm2",local XSC_XM2=This[I,stcontrol] This[I,matrix2]=This[J,matrix2] This[J,stcontrol]=XSC_XM2 break
                case "xm4",local XSC_XM4=This[I,stcontrol] This[I,matrix4]=This[J,matrix4] This[J,stcontrol]=XSC_XM4 break
                case "n",local XSC_N=This[I,stcontrol] This[I,number]=This[J,number] This[J,stcontrol]=XSC_N break
                case "q",local XSC_Q=This[I,stcontrol] This[I,quaternion]=This[J,quaternion] This[J,stcontrol]=XSC_Q break
                case "xrd",local XSC_XRD=This[I,stcontrol] This[I,ranger]=This[J,ranger] This[J,stcontrol]=XSC_XRD break
                case "xsc",local XSC_XSC=This[I,stcontrol] This[I,stcontrol]=This[J,stcontrol] This[J,stcontrol]=XSC_XSC break
                case "s",local XSC_S=This[I,stcontrol] This[I,string]=This[J,string] This[J,stcontrol]=XSC_S break
                case "t",local XSC_T=This[I,stcontrol] This[I,table]=This[J,table] This[J,stcontrol]=XSC_T break
#ifdef table:popTracedata()
                case "xtd",local XSC_XTD=This[I,stcontrol] This[I,tracedata]=This[J,tracedata] This[J,stcontrol]=XSC_XTD break
#endif
                case "v",local XSC_V=This[I,stcontrol] This[I,vector]=This[J,vector] This[J,stcontrol]=XSC_V break
                case "xv2",local XSC_XV2=This[I,stcontrol] This[I,vector2]=This[J,vector2] This[J,stcontrol]=XSC_XV2 break
                case "xv4",local XSC_XV4=This[I,stcontrol] This[I,vector4]=This[J,vector4] This[J,stcontrol]=XSC_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XSC_XWM=This[I,stcontrol] This[I,webmaterial]=This[J,webmaterial] This[J,stcontrol]=XSC_XWM break
#endif
                case "xwl",local XSC_XWL=This[I,stcontrol] This[I,wirelink]=This[J,wirelink] This[J,stcontrol]=XSC_XWL break
            } break
#endif
            case "s",switch(D[J,string]){
                case "a",local S_A=This[I,string] This[I,angle]=This[J,angle] This[J,string]=S_A break
                case "r",local S_R=This[I,string] This[I,array]=This[J,array] This[J,string]=S_R break
#ifdef table:popAttachment()
                case "xat",local S_XAT=This[I,string] This[I,attachment]=This[J,attachment] This[J,string]=S_XAT break
#endif
                case "b",local S_B=This[I,string] This[I,bone]=This[J,bone] This[J,string]=S_B break
#ifdef table:popCollision()
                case "xcl",local S_XCL=This[I,string] This[I,collision]=This[J,collision] This[J,string]=S_XCL break
#endif
                case "c",local S_C=This[I,string] This[I,complex]=This[J,complex] This[J,string]=S_C break
#ifdef table:popCoroutine()
                case "xco",local S_XCO=This[I,string] This[I,coroutine]=This[J,coroutine] This[J,string]=S_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local S_XCR=This[I,string] This[I,curve]=This[J,curve] This[J,string]=S_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local S_XDM=This[I,string] This[I,damage]=This[J,damage] This[J,string]=S_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local S_XEF=This[I,string] This[I,effect]=This[J,effect] This[J,string]=S_XEF break
#endif
                case "e",local S_E=This[I,string] This[I,entity]=This[J,entity] This[J,string]=S_E break
#ifdef table:popFtrace()
                case "xft",local S_XFT=This[I,string] This[I,ftrace]=This[J,ftrace] This[J,string]=S_XFT break
#endif
                case "m",local S_M=This[I,string] This[I,matrix]=This[J,matrix] This[J,string]=S_M break
                case "xm2",local S_XM2=This[I,string] This[I,matrix2]=This[J,matrix2] This[J,string]=S_XM2 break
                case "xm4",local S_XM4=This[I,string] This[I,matrix4]=This[J,matrix4] This[J,string]=S_XM4 break
                case "n",local S_N=This[I,string] This[I,number]=This[J,number] This[J,string]=S_N break
                case "q",local S_Q=This[I,string] This[I,quaternion]=This[J,quaternion] This[J,string]=S_Q break
                case "xrd",local S_XRD=This[I,string] This[I,ranger]=This[J,ranger] This[J,string]=S_XRD break
#ifdef table:popStcontrol()
                case "xsc",local S_XSC=This[I,string] This[I,stcontrol]=This[J,stcontrol] This[J,string]=S_XSC break
#endif
                case "s",local S_S=This[I,string] This[I,string]=This[J,string] This[J,string]=S_S break
                case "t",local S_T=This[I,string] This[I,table]=This[J,table] This[J,string]=S_T break
#ifdef table:popTracedata()
                case "xtd",local S_XTD=This[I,string] This[I,tracedata]=This[J,tracedata] This[J,string]=S_XTD break
#endif
                case "v",local S_V=This[I,string] This[I,vector]=This[J,vector] This[J,string]=S_V break
                case "xv2",local S_XV2=This[I,string] This[I,vector2]=This[J,vector2] This[J,string]=S_XV2 break
                case "xv4",local S_XV4=This[I,string] This[I,vector4]=This[J,vector4] This[J,string]=S_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local S_XWM=This[I,string] This[I,webmaterial]=This[J,webmaterial] This[J,string]=S_XWM break
#endif
                case "xwl",local S_XWL=This[I,string] This[I,wirelink]=This[J,wirelink] This[J,string]=S_XWL break
            } break
            case "t",switch(D[J,string]){
                case "a",local T_A=This[I,table] This[I,angle]=This[J,angle] This[J,table]=T_A break
                case "r",local T_R=This[I,table] This[I,array]=This[J,array] This[J,table]=T_R break
#ifdef table:popAttachment()
                case "xat",local T_XAT=This[I,table] This[I,attachment]=This[J,attachment] This[J,table]=T_XAT break
#endif
                case "b",local T_B=This[I,table] This[I,bone]=This[J,bone] This[J,table]=T_B break
#ifdef table:popCollision()
                case "xcl",local T_XCL=This[I,table] This[I,collision]=This[J,collision] This[J,table]=T_XCL break
#endif
                case "c",local T_C=This[I,table] This[I,complex]=This[J,complex] This[J,table]=T_C break
#ifdef table:popCoroutine()
                case "xco",local T_XCO=This[I,table] This[I,coroutine]=This[J,coroutine] This[J,table]=T_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local T_XCR=This[I,table] This[I,curve]=This[J,curve] This[J,table]=T_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local T_XDM=This[I,table] This[I,damage]=This[J,damage] This[J,table]=T_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local T_XEF=This[I,table] This[I,effect]=This[J,effect] This[J,table]=T_XEF break
#endif
                case "e",local T_E=This[I,table] This[I,entity]=This[J,entity] This[J,table]=T_E break
#ifdef table:popFtrace()
                case "xft",local T_XFT=This[I,table] This[I,ftrace]=This[J,ftrace] This[J,table]=T_XFT break
#endif
                case "m",local T_M=This[I,table] This[I,matrix]=This[J,matrix] This[J,table]=T_M break
                case "xm2",local T_XM2=This[I,table] This[I,matrix2]=This[J,matrix2] This[J,table]=T_XM2 break
                case "xm4",local T_XM4=This[I,table] This[I,matrix4]=This[J,matrix4] This[J,table]=T_XM4 break
                case "n",local T_N=This[I,table] This[I,number]=This[J,number] This[J,table]=T_N break
                case "q",local T_Q=This[I,table] This[I,quaternion]=This[J,quaternion] This[J,table]=T_Q break
                case "xrd",local T_XRD=This[I,table] This[I,ranger]=This[J,ranger] This[J,table]=T_XRD break
#ifdef table:popStcontrol()
                case "xsc",local T_XSC=This[I,table] This[I,stcontrol]=This[J,stcontrol] This[J,table]=T_XSC break
#endif
                case "s",local T_S=This[I,table] This[I,string]=This[J,string] This[J,table]=T_S break
                case "t",local T_T=This[I,table] This[I,table]=This[J,table] This[J,table]=T_T break
#ifdef table:popTracedata()
                case "xtd",local T_XTD=This[I,table] This[I,tracedata]=This[J,tracedata] This[J,table]=T_XTD break
#endif
                case "v",local T_V=This[I,table] This[I,vector]=This[J,vector] This[J,table]=T_V break
                case "xv2",local T_XV2=This[I,table] This[I,vector2]=This[J,vector2] This[J,table]=T_XV2 break
                case "xv4",local T_XV4=This[I,table] This[I,vector4]=This[J,vector4] This[J,table]=T_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local T_XWM=This[I,table] This[I,webmaterial]=This[J,webmaterial] This[J,table]=T_XWM break
#endif
                case "xwl",local T_XWL=This[I,table] This[I,wirelink]=This[J,wirelink] This[J,table]=T_XWL break
            } break
#ifdef table:popTracedata()
            case "xtd",switch(D[J,string]){
                case "a",local XTD_A=This[I,tracedata] This[I,angle]=This[J,angle] This[J,tracedata]=XTD_A break
                case "r",local XTD_R=This[I,tracedata] This[I,array]=This[J,array] This[J,tracedata]=XTD_R break
#ifdef table:popAttachment()
                case "xat",local XTD_XAT=This[I,tracedata] This[I,attachment]=This[J,attachment] This[J,tracedata]=XTD_XAT break
#endif
                case "b",local XTD_B=This[I,tracedata] This[I,bone]=This[J,bone] This[J,tracedata]=XTD_B break
#ifdef table:popCollision()
                case "xcl",local XTD_XCL=This[I,tracedata] This[I,collision]=This[J,collision] This[J,tracedata]=XTD_XCL break
#endif
                case "c",local XTD_C=This[I,tracedata] This[I,complex]=This[J,complex] This[J,tracedata]=XTD_C break
#ifdef table:popCoroutine()
                case "xco",local XTD_XCO=This[I,tracedata] This[I,coroutine]=This[J,coroutine] This[J,tracedata]=XTD_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XTD_XCR=This[I,tracedata] This[I,curve]=This[J,curve] This[J,tracedata]=XTD_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XTD_XDM=This[I,tracedata] This[I,damage]=This[J,damage] This[J,tracedata]=XTD_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XTD_XEF=This[I,tracedata] This[I,effect]=This[J,effect] This[J,tracedata]=XTD_XEF break
#endif
                case "e",local XTD_E=This[I,tracedata] This[I,entity]=This[J,entity] This[J,tracedata]=XTD_E break
#ifdef table:popFtrace()
                case "xft",local XTD_XFT=This[I,tracedata] This[I,ftrace]=This[J,ftrace] This[J,tracedata]=XTD_XFT break
#endif
                case "m",local XTD_M=This[I,tracedata] This[I,matrix]=This[J,matrix] This[J,tracedata]=XTD_M break
                case "xm2",local XTD_XM2=This[I,tracedata] This[I,matrix2]=This[J,matrix2] This[J,tracedata]=XTD_XM2 break
                case "xm4",local XTD_XM4=This[I,tracedata] This[I,matrix4]=This[J,matrix4] This[J,tracedata]=XTD_XM4 break
                case "n",local XTD_N=This[I,tracedata] This[I,number]=This[J,number] This[J,tracedata]=XTD_N break
                case "q",local XTD_Q=This[I,tracedata] This[I,quaternion]=This[J,quaternion] This[J,tracedata]=XTD_Q break
                case "xrd",local XTD_XRD=This[I,tracedata] This[I,ranger]=This[J,ranger] This[J,tracedata]=XTD_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XTD_XSC=This[I,tracedata] This[I,stcontrol]=This[J,stcontrol] This[J,tracedata]=XTD_XSC break
#endif
                case "s",local XTD_S=This[I,tracedata] This[I,string]=This[J,string] This[J,tracedata]=XTD_S break
                case "t",local XTD_T=This[I,tracedata] This[I,table]=This[J,table] This[J,tracedata]=XTD_T break
                case "xtd",local XTD_XTD=This[I,tracedata] This[I,tracedata]=This[J,tracedata] This[J,tracedata]=XTD_XTD break
                case "v",local XTD_V=This[I,tracedata] This[I,vector]=This[J,vector] This[J,tracedata]=XTD_V break
                case "xv2",local XTD_XV2=This[I,tracedata] This[I,vector2]=This[J,vector2] This[J,tracedata]=XTD_XV2 break
                case "xv4",local XTD_XV4=This[I,tracedata] This[I,vector4]=This[J,vector4] This[J,tracedata]=XTD_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XTD_XWM=This[I,tracedata] This[I,webmaterial]=This[J,webmaterial] This[J,tracedata]=XTD_XWM break
#endif
                case "xwl",local XTD_XWL=This[I,tracedata] This[I,wirelink]=This[J,wirelink] This[J,tracedata]=XTD_XWL break
            } break
#endif
            case "v",switch(D[J,string]){
                case "a",local V_A=This[I,vector] This[I,angle]=This[J,angle] This[J,vector]=V_A break
                case "r",local V_R=This[I,vector] This[I,array]=This[J,array] This[J,vector]=V_R break
#ifdef table:popAttachment()
                case "xat",local V_XAT=This[I,vector] This[I,attachment]=This[J,attachment] This[J,vector]=V_XAT break
#endif
                case "b",local V_B=This[I,vector] This[I,bone]=This[J,bone] This[J,vector]=V_B break
#ifdef table:popCollision()
                case "xcl",local V_XCL=This[I,vector] This[I,collision]=This[J,collision] This[J,vector]=V_XCL break
#endif
                case "c",local V_C=This[I,vector] This[I,complex]=This[J,complex] This[J,vector]=V_C break
#ifdef table:popCoroutine()
                case "xco",local V_XCO=This[I,vector] This[I,coroutine]=This[J,coroutine] This[J,vector]=V_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local V_XCR=This[I,vector] This[I,curve]=This[J,curve] This[J,vector]=V_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local V_XDM=This[I,vector] This[I,damage]=This[J,damage] This[J,vector]=V_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local V_XEF=This[I,vector] This[I,effect]=This[J,effect] This[J,vector]=V_XEF break
#endif
                case "e",local V_E=This[I,vector] This[I,entity]=This[J,entity] This[J,vector]=V_E break
#ifdef table:popFtrace()
                case "xft",local V_XFT=This[I,vector] This[I,ftrace]=This[J,ftrace] This[J,vector]=V_XFT break
#endif
                case "m",local V_M=This[I,vector] This[I,matrix]=This[J,matrix] This[J,vector]=V_M break
                case "xm2",local V_XM2=This[I,vector] This[I,matrix2]=This[J,matrix2] This[J,vector]=V_XM2 break
                case "xm4",local V_XM4=This[I,vector] This[I,matrix4]=This[J,matrix4] This[J,vector]=V_XM4 break
                case "n",local V_N=This[I,vector] This[I,number]=This[J,number] This[J,vector]=V_N break
                case "q",local V_Q=This[I,vector] This[I,quaternion]=This[J,quaternion] This[J,vector]=V_Q break
                case "xrd",local V_XRD=This[I,vector] This[I,ranger]=This[J,ranger] This[J,vector]=V_XRD break
#ifdef table:popStcontrol()
                case "xsc",local V_XSC=This[I,vector] This[I,stcontrol]=This[J,stcontrol] This[J,vector]=V_XSC break
#endif
                case "s",local V_S=This[I,vector] This[I,string]=This[J,string] This[J,vector]=V_S break
                case "t",local V_T=This[I,vector] This[I,table]=This[J,table] This[J,vector]=V_T break
#ifdef table:popTracedata()
                case "xtd",local V_XTD=This[I,vector] This[I,tracedata]=This[J,tracedata] This[J,vector]=V_XTD break
#endif
                case "v",local V_V=This[I,vector] This[I,vector]=This[J,vector] This[J,vector]=V_V break
                case "xv2",local V_XV2=This[I,vector] This[I,vector2]=This[J,vector2] This[J,vector]=V_XV2 break
                case "xv4",local V_XV4=This[I,vector] This[I,vector4]=This[J,vector4] This[J,vector]=V_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local V_XWM=This[I,vector] This[I,webmaterial]=This[J,webmaterial] This[J,vector]=V_XWM break
#endif
                case "xwl",local V_XWL=This[I,vector] This[I,wirelink]=This[J,wirelink] This[J,vector]=V_XWL break
            } break
            case "xv2",switch(D[J,string]){
                case "a",local XV2_A=This[I,vector2] This[I,angle]=This[J,angle] This[J,vector2]=XV2_A break
                case "r",local XV2_R=This[I,vector2] This[I,array]=This[J,array] This[J,vector2]=XV2_R break
#ifdef table:popAttachment()
                case "xat",local XV2_XAT=This[I,vector2] This[I,attachment]=This[J,attachment] This[J,vector2]=XV2_XAT break
#endif
                case "b",local XV2_B=This[I,vector2] This[I,bone]=This[J,bone] This[J,vector2]=XV2_B break
#ifdef table:popCollision()
                case "xcl",local XV2_XCL=This[I,vector2] This[I,collision]=This[J,collision] This[J,vector2]=XV2_XCL break
#endif
                case "c",local XV2_C=This[I,vector2] This[I,complex]=This[J,complex] This[J,vector2]=XV2_C break
#ifdef table:popCoroutine()
                case "xco",local XV2_XCO=This[I,vector2] This[I,coroutine]=This[J,coroutine] This[J,vector2]=XV2_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XV2_XCR=This[I,vector2] This[I,curve]=This[J,curve] This[J,vector2]=XV2_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XV2_XDM=This[I,vector2] This[I,damage]=This[J,damage] This[J,vector2]=XV2_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XV2_XEF=This[I,vector2] This[I,effect]=This[J,effect] This[J,vector2]=XV2_XEF break
#endif
                case "e",local XV2_E=This[I,vector2] This[I,entity]=This[J,entity] This[J,vector2]=XV2_E break
#ifdef table:popFtrace()
                case "xft",local XV2_XFT=This[I,vector2] This[I,ftrace]=This[J,ftrace] This[J,vector2]=XV2_XFT break
#endif
                case "m",local XV2_M=This[I,vector2] This[I,matrix]=This[J,matrix] This[J,vector2]=XV2_M break
                case "xm2",local XV2_XM2=This[I,vector2] This[I,matrix2]=This[J,matrix2] This[J,vector2]=XV2_XM2 break
                case "xm4",local XV2_XM4=This[I,vector2] This[I,matrix4]=This[J,matrix4] This[J,vector2]=XV2_XM4 break
                case "n",local XV2_N=This[I,vector2] This[I,number]=This[J,number] This[J,vector2]=XV2_N break
                case "q",local XV2_Q=This[I,vector2] This[I,quaternion]=This[J,quaternion] This[J,vector2]=XV2_Q break
                case "xrd",local XV2_XRD=This[I,vector2] This[I,ranger]=This[J,ranger] This[J,vector2]=XV2_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XV2_XSC=This[I,vector2] This[I,stcontrol]=This[J,stcontrol] This[J,vector2]=XV2_XSC break
#endif
                case "s",local XV2_S=This[I,vector2] This[I,string]=This[J,string] This[J,vector2]=XV2_S break
                case "t",local XV2_T=This[I,vector2] This[I,table]=This[J,table] This[J,vector2]=XV2_T break
#ifdef table:popTracedata()
                case "xtd",local XV2_XTD=This[I,vector2] This[I,tracedata]=This[J,tracedata] This[J,vector2]=XV2_XTD break
#endif
                case "v",local XV2_V=This[I,vector2] This[I,vector]=This[J,vector] This[J,vector2]=XV2_V break
                case "xv2",local XV2_XV2=This[I,vector2] This[I,vector2]=This[J,vector2] This[J,vector2]=XV2_XV2 break
                case "xv4",local XV2_XV4=This[I,vector2] This[I,vector4]=This[J,vector4] This[J,vector2]=XV2_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XV2_XWM=This[I,vector2] This[I,webmaterial]=This[J,webmaterial] This[J,vector2]=XV2_XWM break
#endif
                case "xwl",local XV2_XWL=This[I,vector2] This[I,wirelink]=This[J,wirelink] This[J,vector2]=XV2_XWL break
            } break
            case "xv4",switch(D[J,string]){
                case "a",local XV4_A=This[I,vector4] This[I,angle]=This[J,angle] This[J,vector4]=XV4_A break
                case "r",local XV4_R=This[I,vector4] This[I,array]=This[J,array] This[J,vector4]=XV4_R break
#ifdef table:popAttachment()
                case "xat",local XV4_XAT=This[I,vector4] This[I,attachment]=This[J,attachment] This[J,vector4]=XV4_XAT break
#endif
                case "b",local XV4_B=This[I,vector4] This[I,bone]=This[J,bone] This[J,vector4]=XV4_B break
#ifdef table:popCollision()
                case "xcl",local XV4_XCL=This[I,vector4] This[I,collision]=This[J,collision] This[J,vector4]=XV4_XCL break
#endif
                case "c",local XV4_C=This[I,vector4] This[I,complex]=This[J,complex] This[J,vector4]=XV4_C break
#ifdef table:popCoroutine()
                case "xco",local XV4_XCO=This[I,vector4] This[I,coroutine]=This[J,coroutine] This[J,vector4]=XV4_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XV4_XCR=This[I,vector4] This[I,curve]=This[J,curve] This[J,vector4]=XV4_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XV4_XDM=This[I,vector4] This[I,damage]=This[J,damage] This[J,vector4]=XV4_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XV4_XEF=This[I,vector4] This[I,effect]=This[J,effect] This[J,vector4]=XV4_XEF break
#endif
                case "e",local XV4_E=This[I,vector4] This[I,entity]=This[J,entity] This[J,vector4]=XV4_E break
#ifdef table:popFtrace()
                case "xft",local XV4_XFT=This[I,vector4] This[I,ftrace]=This[J,ftrace] This[J,vector4]=XV4_XFT break
#endif
                case "m",local XV4_M=This[I,vector4] This[I,matrix]=This[J,matrix] This[J,vector4]=XV4_M break
                case "xm2",local XV4_XM2=This[I,vector4] This[I,matrix2]=This[J,matrix2] This[J,vector4]=XV4_XM2 break
                case "xm4",local XV4_XM4=This[I,vector4] This[I,matrix4]=This[J,matrix4] This[J,vector4]=XV4_XM4 break
                case "n",local XV4_N=This[I,vector4] This[I,number]=This[J,number] This[J,vector4]=XV4_N break
                case "q",local XV4_Q=This[I,vector4] This[I,quaternion]=This[J,quaternion] This[J,vector4]=XV4_Q break
                case "xrd",local XV4_XRD=This[I,vector4] This[I,ranger]=This[J,ranger] This[J,vector4]=XV4_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XV4_XSC=This[I,vector4] This[I,stcontrol]=This[J,stcontrol] This[J,vector4]=XV4_XSC break
#endif
                case "s",local XV4_S=This[I,vector4] This[I,string]=This[J,string] This[J,vector4]=XV4_S break
                case "t",local XV4_T=This[I,vector4] This[I,table]=This[J,table] This[J,vector4]=XV4_T break
#ifdef table:popTracedata()
                case "xtd",local XV4_XTD=This[I,vector4] This[I,tracedata]=This[J,tracedata] This[J,vector4]=XV4_XTD break
#endif
                case "v",local XV4_V=This[I,vector4] This[I,vector]=This[J,vector] This[J,vector4]=XV4_V break
                case "xv2",local XV4_XV2=This[I,vector4] This[I,vector2]=This[J,vector2] This[J,vector4]=XV4_XV2 break
                case "xv4",local XV4_XV4=This[I,vector4] This[I,vector4]=This[J,vector4] This[J,vector4]=XV4_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XV4_XWM=This[I,vector4] This[I,webmaterial]=This[J,webmaterial] This[J,vector4]=XV4_XWM break
#endif
                case "xwl",local XV4_XWL=This[I,vector4] This[I,wirelink]=This[J,wirelink] This[J,vector4]=XV4_XWL break
            } break
#ifdef table:popWebmaterial()
            case "xwm",switch(D[J,string]){
                case "a",local XWM_A=This[I,webmaterial] This[I,angle]=This[J,angle] This[J,webmaterial]=XWM_A break
                case "r",local XWM_R=This[I,webmaterial] This[I,array]=This[J,array] This[J,webmaterial]=XWM_R break
#ifdef table:popAttachment()
                case "xat",local XWM_XAT=This[I,webmaterial] This[I,attachment]=This[J,attachment] This[J,webmaterial]=XWM_XAT break
#endif
                case "b",local XWM_B=This[I,webmaterial] This[I,bone]=This[J,bone] This[J,webmaterial]=XWM_B break
#ifdef table:popCollision()
                case "xcl",local XWM_XCL=This[I,webmaterial] This[I,collision]=This[J,collision] This[J,webmaterial]=XWM_XCL break
#endif
                case "c",local XWM_C=This[I,webmaterial] This[I,complex]=This[J,complex] This[J,webmaterial]=XWM_C break
#ifdef table:popCoroutine()
                case "xco",local XWM_XCO=This[I,webmaterial] This[I,coroutine]=This[J,coroutine] This[J,webmaterial]=XWM_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XWM_XCR=This[I,webmaterial] This[I,curve]=This[J,curve] This[J,webmaterial]=XWM_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XWM_XDM=This[I,webmaterial] This[I,damage]=This[J,damage] This[J,webmaterial]=XWM_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XWM_XEF=This[I,webmaterial] This[I,effect]=This[J,effect] This[J,webmaterial]=XWM_XEF break
#endif
                case "e",local XWM_E=This[I,webmaterial] This[I,entity]=This[J,entity] This[J,webmaterial]=XWM_E break
#ifdef table:popFtrace()
                case "xft",local XWM_XFT=This[I,webmaterial] This[I,ftrace]=This[J,ftrace] This[J,webmaterial]=XWM_XFT break
#endif
                case "m",local XWM_M=This[I,webmaterial] This[I,matrix]=This[J,matrix] This[J,webmaterial]=XWM_M break
                case "xm2",local XWM_XM2=This[I,webmaterial] This[I,matrix2]=This[J,matrix2] This[J,webmaterial]=XWM_XM2 break
                case "xm4",local XWM_XM4=This[I,webmaterial] This[I,matrix4]=This[J,matrix4] This[J,webmaterial]=XWM_XM4 break
                case "n",local XWM_N=This[I,webmaterial] This[I,number]=This[J,number] This[J,webmaterial]=XWM_N break
                case "q",local XWM_Q=This[I,webmaterial] This[I,quaternion]=This[J,quaternion] This[J,webmaterial]=XWM_Q break
                case "xrd",local XWM_XRD=This[I,webmaterial] This[I,ranger]=This[J,ranger] This[J,webmaterial]=XWM_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XWM_XSC=This[I,webmaterial] This[I,stcontrol]=This[J,stcontrol] This[J,webmaterial]=XWM_XSC break
#endif
                case "s",local XWM_S=This[I,webmaterial] This[I,string]=This[J,string] This[J,webmaterial]=XWM_S break
                case "t",local XWM_T=This[I,webmaterial] This[I,table]=This[J,table] This[J,webmaterial]=XWM_T break
#ifdef table:popTracedata()
                case "xtd",local XWM_XTD=This[I,webmaterial] This[I,tracedata]=This[J,tracedata] This[J,webmaterial]=XWM_XTD break
#endif
                case "v",local XWM_V=This[I,webmaterial] This[I,vector]=This[J,vector] This[J,webmaterial]=XWM_V break
                case "xv2",local XWM_XV2=This[I,webmaterial] This[I,vector2]=This[J,vector2] This[J,webmaterial]=XWM_XV2 break
                case "xv4",local XWM_XV4=This[I,webmaterial] This[I,vector4]=This[J,vector4] This[J,webmaterial]=XWM_XV4 break
                case "xwm",local XWM_XWM=This[I,webmaterial] This[I,webmaterial]=This[J,webmaterial] This[J,webmaterial]=XWM_XWM break
                case "xwl",local XWM_XWL=This[I,webmaterial] This[I,wirelink]=This[J,wirelink] This[J,webmaterial]=XWM_XWL break
            } break
#endif
            case "xwl",switch(D[J,string]){
                case "a",local XWL_A=This[I,wirelink] This[I,angle]=This[J,angle] This[J,wirelink]=XWL_A break
                case "r",local XWL_R=This[I,wirelink] This[I,array]=This[J,array] This[J,wirelink]=XWL_R break
#ifdef table:popAttachment()
                case "xat",local XWL_XAT=This[I,wirelink] This[I,attachment]=This[J,attachment] This[J,wirelink]=XWL_XAT break
#endif
                case "b",local XWL_B=This[I,wirelink] This[I,bone]=This[J,bone] This[J,wirelink]=XWL_B break
#ifdef table:popCollision()
                case "xcl",local XWL_XCL=This[I,wirelink] This[I,collision]=This[J,collision] This[J,wirelink]=XWL_XCL break
#endif
                case "c",local XWL_C=This[I,wirelink] This[I,complex]=This[J,complex] This[J,wirelink]=XWL_C break
#ifdef table:popCoroutine()
                case "xco",local XWL_XCO=This[I,wirelink] This[I,coroutine]=This[J,coroutine] This[J,wirelink]=XWL_XCO break
#endif
#ifdef table:popCurve()
                case "xcr",local XWL_XCR=This[I,wirelink] This[I,curve]=This[J,curve] This[J,wirelink]=XWL_XCR break
#endif
#ifdef table:popDamage()
                case "xdm",local XWL_XDM=This[I,wirelink] This[I,damage]=This[J,damage] This[J,wirelink]=XWL_XDM break
#endif
#ifdef table:popEffect()
                case "xef",local XWL_XEF=This[I,wirelink] This[I,effect]=This[J,effect] This[J,wirelink]=XWL_XEF break
#endif
                case "e",local XWL_E=This[I,wirelink] This[I,entity]=This[J,entity] This[J,wirelink]=XWL_E break
#ifdef table:popFtrace()
                case "xft",local XWL_XFT=This[I,wirelink] This[I,ftrace]=This[J,ftrace] This[J,wirelink]=XWL_XFT break
#endif
                case "m",local XWL_M=This[I,wirelink] This[I,matrix]=This[J,matrix] This[J,wirelink]=XWL_M break
                case "xm2",local XWL_XM2=This[I,wirelink] This[I,matrix2]=This[J,matrix2] This[J,wirelink]=XWL_XM2 break
                case "xm4",local XWL_XM4=This[I,wirelink] This[I,matrix4]=This[J,matrix4] This[J,wirelink]=XWL_XM4 break
                case "n",local XWL_N=This[I,wirelink] This[I,number]=This[J,number] This[J,wirelink]=XWL_N break
                case "q",local XWL_Q=This[I,wirelink] This[I,quaternion]=This[J,quaternion] This[J,wirelink]=XWL_Q break
                case "xrd",local XWL_XRD=This[I,wirelink] This[I,ranger]=This[J,ranger] This[J,wirelink]=XWL_XRD break
#ifdef table:popStcontrol()
                case "xsc",local XWL_XSC=This[I,wirelink] This[I,stcontrol]=This[J,stcontrol] This[J,wirelink]=XWL_XSC break
#endif
                case "s",local XWL_S=This[I,wirelink] This[I,string]=This[J,string] This[J,wirelink]=XWL_S break
                case "t",local XWL_T=This[I,wirelink] This[I,table]=This[J,table] This[J,wirelink]=XWL_T break
#ifdef table:popTracedata()
                case "xtd",local XWL_XTD=This[I,wirelink] This[I,tracedata]=This[J,tracedata] This[J,wirelink]=XWL_XTD break
#endif
                case "v",local XWL_V=This[I,wirelink] This[I,vector]=This[J,vector] This[J,wirelink]=XWL_V break
                case "xv2",local XWL_XV2=This[I,wirelink] This[I,vector2]=This[J,vector2] This[J,wirelink]=XWL_XV2 break
                case "xv4",local XWL_XV4=This[I,wirelink] This[I,vector4]=This[J,vector4] This[J,wirelink]=XWL_XV4 break
#ifdef table:popWebmaterial()
                case "xwm",local XWL_XWM=This[I,wirelink] This[I,webmaterial]=This[J,webmaterial] This[J,wirelink]=XWL_XWM break
#endif
                case "xwl",local XWL_XWL=This[I,wirelink] This[I,wirelink]=This[J,wirelink] This[J,wirelink]=XWL_XWL break
            } break
        }
    }
}

# TEST CODE #
local TestTable = table((1)="1st",(2)="2nd",(3)=333,(4)=owner())
print("[ BEFORE REVERSE ]")
printTable(TestTable)
TestTable:reverse()
print("[ AFTER REVERSE ]")
printTable(TestTable)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment