public static void ExtractFiltered(string cabPath, string extractPath, string[] filters, bool inclusive)
        {
            var sb = new Text.StringBuilder();

            if (filters != null && filters.Length > 0)
            {
                sb.Append(filters[0]);
            }
            for (int i = 1; i < filters.Length; i++)
            {
                sb.Append(',');
                sb.Append(filters[i]);
            }

            using (var pin = new PinCollection())
            {
                NativeCommon.CabExtractFiltered(
                    pin.AddBlittable(cabPath),
                    pin.AddBlittable(extractPath),
                    pin.AddBlittable(sb.ToString()),
                    NativeTypes.ToBOOLEAN(inclusive));
            }
        }