private void UpdateIncludedAndExcluded(ReferencedFileSave instance)
        {
            ResetToDefault();

            AssetTypeInfo ati = instance.GetAssetTypeInfo();


            ExcludeMember(nameof(ReferencedFileSave.InvalidFileNameCharacters));
            ExcludeMember(nameof(ReferencedFileSave.ToStringDelegate));
            ExcludeMember(nameof(ReferencedFileSave.Properties));

            ContainerType containerType = instance.GetContainerType();

            if (containerType == ContainerType.Entity)
            {
                // We do this because this is set automatically if the Entity is unique
                ExcludeMember(nameof(ReferencedFileSave.IsSharedStatic));

                // We do this because whether the objects from a file are manually updated or not
                // should be up to the entity, not the source file.
                ExcludeMember(nameof(ReferencedFileSave.IsManuallyUpdated));
            }

            if (containerType == ContainerType.Entity || ati == null || ati.QualifiedRuntimeTypeName.QualifiedType != "Microsoft.Xna.Framework.Media.Song")
            {
                ExcludeMember(nameof(ReferencedFileSave.DestroyOnUnload));
            }

            #region Extension-based additions/removals
            string extension = FileManager.GetExtension(instance.Name);

            if (extension != "csv" && !instance.TreatAsCsv)
            {
                ExcludeMember(nameof(ReferencedFileSave.CreatesDictionary));
                ExcludeMember(nameof(ReferencedFileSave.IsDatabaseForLocalizing));
                ExcludeMember(nameof(ReferencedFileSave.UniformRowType));
            }
            else
            {
                IncludeMember(nameof(ReferencedFileSave.UniformRowType), typeof(ReferencedFileSave), new AvailablePrimitiveTypeArraysStringConverter());
            }

            if ((extension != "txt" && extension != "csv") ||
                (extension == "txt" && instance.TreatAsCsv == false)
                )
            {
                ExcludeMember(nameof(ReferencedFileSave.CsvDelimiter));
            }

            if (extension != "txt")
            {
                ExcludeMember(nameof(ReferencedFileSave.TreatAsCsv));
            }

            if (extension == "png")
            {
                Attribute[] fileDetailsCategoryAttribute = new Attribute[] {
                    new CategoryAttribute("File Details")
                };
                IncludeMember("ImageWidth", typeof(int), null, GetImageWidth, null, fileDetailsCategoryAttribute);
                IncludeMember("ImageHeight", typeof(int), null, GetImageHeight, null, fileDetailsCategoryAttribute);
            }

            if (extension == "emix")
            {
                Attribute[] fileDetailsCategoryAttribute = new Attribute[] {
                    new CategoryAttribute("File Details")
                };

                IncludeMember("EquilibriumParticleCount", typeof(float), null, GetEquilibriumParticleCount, null, fileDetailsCategoryAttribute);
                IncludeMember("BurstParticleCount", typeof(float), null, GetBurstParticleCount, null, fileDetailsCategoryAttribute);
            }

            #endregion

            AddProjectSpecificFileMember();


            if (!instance.LoadedAtRuntime)
            {
                ExcludeMember(nameof(ReferencedFileSave.IsSharedStatic));
                ExcludeMember(nameof(ReferencedFileSave.IsManuallyUpdated));
                ExcludeMember(nameof(ReferencedFileSave.LoadedOnlyWhenReferenced));
                ExcludeMember(nameof(ReferencedFileSave.HasPublicProperty));
                ExcludeMember("InstanceName");
                ExcludeMember(nameof(ReferencedFileSave.IncludeDirectoryRelativeToContainer));
            }

            if (ati == null || string.IsNullOrEmpty(ati.MakeManuallyUpdatedMethod))
            {
                ExcludeMember(nameof(ReferencedFileSave.IsManuallyUpdated));
            }

            if (!instance.GetCanUseContentPipeline())
            {
                ExcludeMember(nameof(ReferencedFileSave.UseContentPipeline));
            }
            if (!instance.UseContentPipeline || ati.QualifiedRuntimeTypeName.QualifiedType != "Microsoft.Xna.Framework.Graphics.Texture2D")
            {
                ExcludeMember("TextureFormat");
            }

            IncludeMember("OpensWith", typeof(ReferencedFileSave), new AvailableApplicationsStringConverters());

            bool shouldShowRuntimeType = instance.LoadedAtRuntime;
            if (shouldShowRuntimeType)
            {
                IncludeMember("RuntimeType", typeof(ReferencedFileSave), new AvailableRuntimeTypeConverter()
                {
                    ReferencedFileSave = instance
                });
            }
            else
            {
                ExcludeMember(nameof(ReferencedFileSave.RuntimeType));
            }

            if (string.IsNullOrEmpty(instance.SourceFile))
            {
                ExcludeMember(nameof(ReferencedFileSave.SourceFile));
                ExcludeMember(nameof(ReferencedFileSave.BuildTool));
                ExcludeMember(nameof(ReferencedFileSave.AdditionalArguments));
                ExcludeMember(nameof(ReferencedFileSave.ConditionalCompilationSymbols));
            }
            else
            {
            }
        }