private static CoreArrayType GetCoreTypeOfType(Type type)
        {
            CoreArrayType coreArrayType = new Loader.CoreArrayType();

            while (type.IsArray)
            {
                type = type.GetElementType();
                coreArrayType.dimensionality++;
            }
            coreArrayType.coreType = type;
            return(coreArrayType);
        }
 private static void CheckTypesEqual(Type parameterType, object argument)
 {
     if (parameterType == typeof(object))
     {
         return;
     }
     if (argument == null)
     {
         if (parameterType == Type.GetType("System.Double") || parameterType == Type.GetType("System.Int32") || parameterType == Type.GetType("System.Boolean"))
         {
             throw new ArgumentException("Cannot pass a null argument to primitive type " + parameterType);
         }
         return;
     }
     else
     {
         Type type = argument.GetType();
         Loader.CoreArrayType coreTypeOfType  = Loader.GetCoreTypeOfType(parameterType);
         Loader.CoreArrayType coreTypeOfType2 = Loader.GetCoreTypeOfType(type);
         if (coreTypeOfType.dimensionality == coreTypeOfType2.dimensionality)
         {
             if (coreTypeOfType.dimensionality > 0)
             {
                 return;
             }
             if (parameterType.IsAssignableFrom(type))
             {
                 return;
             }
             if (parameterType == typeof(double) && type == typeof(int))
             {
                 return;
             }
             if (Type.GetType("NXOpen.TaggedObject, NXOpen.Utilities").IsAssignableFrom(parameterType) && type == typeof(uint))
             {
                 return;
             }
             throw new ArgumentException(string.Concat(new object[]
             {
                 "parameter type ",
                 parameterType,
                 " and supplied type ",
                 type,
                 " are not compatible"
             }));
         }
         else
         {
             if (coreTypeOfType.dimensionality == 0)
             {
                 throw new ArgumentException(string.Concat(new object[]
                 {
                     "Cannot pass array argument ",
                     argument,
                     " to non-array parameter type ",
                     parameterType
                 }));
             }
             int num = coreTypeOfType2.dimensionality;
             if (num == 0)
             {
                 num = (argument.GetType().IsArray ? 1 : 0);
             }
             if (num == 0)
             {
                 throw new ArgumentException(string.Concat(new object[]
                 {
                     "Cannot pass non-array argument ",
                     argument,
                     " to array parameter type ",
                     parameterType
                 }));
             }
             return;
         }
     }
 }