Macro: ARRAY$PROPERTY
#DATA // Start the property
//Push the get and set messages
ARRAY_PROPERTY_NAME_HELPER !1 !2 !3 !4 !5 !6 !7 !8 !9
#DPUSH |CI21 // Push ARGARRAY
#SET Q$ 0
ARRAY_DIM_COUNT_HELPER !2 !3 !4 !5 !6 !7 !8 !9 // sets !q to num of dims
#DPUSH |CI!q //Push the number of dimensions
#DTYPE Q$ !1 // get the property type in q
#DPUSH |CI!q // Push the array type
#IF (!q=19)
//It's a struct, so we must push the struct metadata as well
#PUSH !h
#STRG H$ !1
#DPUSH |CI!h
#POP H$
#ENDIF
ARRAY_DIM_SIZE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 //Push the size of each dimension
!A [] CREATE$PROPERTY |CI0 |VL