public static bool UntileCopyData(
            Array dstArray,
            Array srcArray,
            int width,
            int height,
            TileCopyFormat dxtFormat)
        {
            Contract.Requires(width > 0);
            Contract.Requires(height > 0);

            if (EditorUtilsDLL.EntryPointsNotFound)
            {
                return(false);
            }

            if (dstArray == null || srcArray == null)
            {
                return(false);
            }

            try
            {
                if (dstArray is byte[] && srcArray is byte[])
                {
                    return(UntileCopyData((byte[])dstArray, (byte[])srcArray, width, height, dxtFormat));
                }
                if (dstArray is short[] && srcArray is short[])
                {
                    return(UntileCopyData((short[])dstArray, (short[])srcArray, width, height, dxtFormat));
                }
                if (dstArray is uint[] && srcArray is uint[])
                {
                    return(UntileCopyData((uint[])dstArray, (uint[])srcArray, width, height, dxtFormat));
                }
            }
            catch (EntryPointNotFoundException ex)
            {
                HandleEntryPointNotFound(ex);
                return(false);
            }

            Phoenix.Debug.Trace.Phoenix.TraceData(System.Diagnostics.TraceEventType.Critical, TypeExtensions.kNone,
                                                  "EditorUtils.UntileCopyData called with a destination and/or source array type that is not supported",
                                                  dstArray.GetType(),
                                                  srcArray.GetType(),
                                                  dxtFormat);
            return(false);
        }
 static extern bool UntileCopyData(
     [Out] short[] dst,
     [In] short[] src,
     int width,
     int height,
     TileCopyFormat dxtFormat);
 static extern bool UntileCopyData(
     [Out] uint[] dst,
     [In] uint[] src,
     int width,
     int height,
     TileCopyFormat dxtFormat = TileCopyFormat.R11G11B10);
 static extern bool TileCopyData(
     [Out] byte[] dst,
     [In] byte[] src,
     int width,
     int height,
     TileCopyFormat dxtFormat);