private IReferenceType GetReflectedType(EvaluatedExpression typeExpression)
        {
            Contract.Requires <ArgumentNullException>(typeExpression != null, "typeExpression");

            IClassObjectReference classObject = typeExpression.Value as IClassObjectReference;

            if (classObject == null)
            {
                throw new ArgumentException();
            }

            return(classObject.GetReflectedType());
        }
        private EvaluatedExpression GetArrayClass(EvaluatedExpression elementType)
        {
            Contract.Requires <ArgumentNullException>(elementType != null, "elementType");
            Contract.Ensures(Contract.Result <EvaluatedExpression>() != null);

            IClassObjectReference classObject = elementType.Value as IClassObjectReference;

            if (classObject == null)
            {
                throw new ArgumentException();
            }

            IReferenceType elementReflectedType = classObject.GetReflectedType();

            return(FindClass("[" + elementReflectedType.GetSignature()));
        }