private void ConstructSpecialDependencies()
        {
            var specialDependenciesRedi = new SpecialDependencies();
            var specialDependencies     = BackingData.AsKeyValueCollection().GetArray("m_SpecialDependencies");

            foreach (var specialDependency in specialDependencies)
            {
                var specialDependencyRedi = new SpecialDependencies.SpecialDependency
                {
                    String             = specialDependency.GetProperty <string>("m_String"),
                    CompilerIdentifier = specialDependency.GetProperty <string>("m_CompilerIdentifier"),
                    Fingerprint        = specialDependency.GetIntegerProperty("m_nFingerprint"),
                    UserData           = specialDependency.GetIntegerProperty("m_nUserData"),
                };

                specialDependenciesRedi.List.Add(specialDependencyRedi);
            }

            Structs.Add(REDIStruct.SpecialDependencies, specialDependenciesRedi);
        }
        public override void Read(BinaryReader reader, Resource resource)
        {
            var kv3 = new BinaryKV3
            {
                Offset = Offset,
                Size   = Size,
            };

            kv3.Read(reader, resource);
            BackingData = kv3;

            ConstructSpecialDependencies();
            ConstuctInputDependencies();

            SearchableUserData = kv3.AsKeyValueCollection().GetSubCollection("m_SearchableUserData");
            foreach (var kv in kv3.Data)
            {
                // TODO: Structs?
                //var structType = ConstructStruct(kv.Key);
            }
        }