private List <CompareProperty> CompareProperties(ArchiveEntry a, ArchiveEntry b)
        {
            var compareProperties = new List <CompareProperty>();

            compareProperties.Add(new CompareProperty("File Size",
                                                      string.Format("{0:n0} bytes", a.Size),
                                                      string.Format("{0:n0} bytes", b.Size)));

            // These properties only gets compared if they're same type, since some properties only appear on those types
            if (a.GetType() == b.GetType())
            {
                switch (a)
                {
                case BA2TextureEntry aTex:
                    var texCompare = (BA2TextureEntry)b;

                    compareProperties.Add(new CompareProperty("DXIGI_FORMAT",
                                                              aTex.format,
                                                              texCompare.format,
                                                              typeof(DXGI_FORMAT_FULL),
                                                              "Texture"));

                    compareProperties.Add(new CompareProperty("Format",
                                                              aTex.format,
                                                              texCompare.format,
                                                              "Texture"));

                    compareProperties.Add(new CompareProperty("Width",
                                                              aTex.width,
                                                              texCompare.width,
                                                              "Texture"));

                    compareProperties.Add(new CompareProperty("Height",
                                                              aTex.height,
                                                              texCompare.height,
                                                              "Texture"));

                    compareProperties.Add(new CompareProperty("Chunks",
                                                              aTex.numChunks,
                                                              texCompare.numChunks,
                                                              "Texture"));

                    compareProperties.Add(new CompareProperty("Mipmap Levels",
                                                              aTex.numMips,
                                                              texCompare.numMips,
                                                              "Texture"));

                    compareProperties.Add(new CompareProperty("Cubemap",
                                                              aTex.isCubemap == 1,
                                                              texCompare.isCubemap == 1,
                                                              "Texture"));
                    break;

                case BA2GNFEntry gnfTex:
                    var gnfCompare = (BA2GNFEntry)b;

                    compareProperties.Add(new CompareProperty("DXGI_FORMAT",
                                                              gnfTex.format,
                                                              gnfCompare.format,
                                                              typeof(DXGI_FORMAT_FULL),
                                                              "Texture"));

                    compareProperties.Add(new CompareProperty("Format",
                                                              gnfTex.format,
                                                              gnfCompare.format,
                                                              "Texture"));

                    compareProperties.Add(new CompareProperty("numFormat",
                                                              gnfTex.numFormat,
                                                              gnfCompare.numFormat,
                                                              "Texture"));

                    compareProperties.Add(new CompareProperty("Width",
                                                              gnfTex.width,
                                                              gnfCompare.width,
                                                              "Texture"));

                    compareProperties.Add(new CompareProperty("Height",
                                                              gnfTex.height,
                                                              gnfCompare.height,
                                                              "Texture"));

                    compareProperties.Add(new CompareProperty("Chunks",
                                                              gnfTex.numChunks,
                                                              gnfCompare.numChunks,
                                                              "Texture"));
                    break;
                }
            }

            return(compareProperties);
        }