public RandomVariable GetRandomVariable(object owner, IContextLookup globalVars)
        {
            Domain objDomain;

            switch (DomainType)
            {
            case RandomVariableDomainType.Boolean:
                objDomain = new BooleanDomain();
                break;

            case RandomVariableDomainType.FiniteInteger:

                objDomain =
                    new FiniteIntegerDomain(IntValues.ConvertAll <Integer>(intObj => new Integer(intObj)).ToArray());
                break;

            case RandomVariableDomainType.ArbitraryToken:
                var enumerable = ArbitraryValues.EvaluateTyped(owner, globalVars);
                var asList     = new System.Collections.ArrayList();
                foreach (object o in enumerable)
                {
                    asList.Add(o);
                }
                objDomain =
                    new ArbitraryTokenDomain(asList.ToArray());
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            return(new RandVar(Name, objDomain));
        }