{- Support for overlapping instances required
   to compile this one - let's not demand that 
   being supported for now.
   
   If you do uncomment this one, you probably
   also want to invoke the IDL compiler with
   -fno-variant-enum-instances.

instance Enum a => Variant a where
  inVariant   = inEnum
  resVariant  = resEnum
  defaultVariant = defaultEnum

  vtEltType _ = VT_I4
-}

--Setting and Getting properties: @getVisible = propertyGet "Visible" [] outBool@.

propertyGet :: Member -> [VarIn] -> ArgOut a -> IDispatch d -> IO a
propertyGet member argsin argout obj
      = do dispid <- obj # getMemberID member
           propertyGetID dispid argsin argout obj
propertyGet :: Member -> [VarIn] -> ArgOut a -> IDispatch d -> IO a
propertyGet member argsin argout obj
      = do dispid <- obj # getMemberID member
           propertyGetID dispid argsin argout obj
propertyGet member argsin argout obj
      = do dispid <- obj # getMemberID member
           propertyGetID dispid argsin argout obj