declare string:    "class("//"Foo"//"(n=5,l1=:,l2=:)"//")"//", dimension(:,:,:)"//", allocatable"
declare component: class(Foo(n=5,l1=:,l2=:)), dimension(:,:,:), allocatable
declare result:    class(Foo(n=5,l1=:,l2=:)), dimension(:,:,:)
declare dummy:     class(Foo(n=5,l1=*,l2=*)), dimension(:,:,:)

a == b:            __T_EQ_SCALAR__(a,b)
a NE b:            __T_NE_SCALAR__(a,b)
a <= b:            __T_LE_SCALAR__(a,b)
a >= b:            __T_GE_SCALAR__(a,b)
a <  b:            __T_LT_SCALAR__(a,b)
a >  b:            __T_GT_SCALAR__(a,b)

FREE(x):           deallocate(x)
COPY(dst,src):     allocate(dst, source=src)
MOVE(dst,src):     call move_alloc(from=src,to=dst)
