There are a couple of gotchas around references:
Arrays of References are forbidden. The CIM language specification explicitly forbids arrays of references; arrays of any other basic type are legal.
References must be keys. Where references are used (in associations), they must be keys.
If you find either of these restrictions on your use of references constraining, then consider using Object Paths (defined as stringssee page 66) containing the full pathname of an instance instead of a reference. These may require more memory and may be more inefficient to handle but they are normally more flexible.