public void WriteStructureStampIfNeeded(ObjectWriter writer)
        {
            if (writer.recipes.ContainsKey(UnderlyingType))
            {
                // We do not need full stamp for recipe types.
                return;
            }

            if (StampHelpers.IsStampNeeded(this, writer.TreatCollectionAsUserObject))
            {
                WriteStructureStamp(writer);
            }
        }
        public void ReadStructureStampIfNeeded(ObjectReader reader, VersionToleranceLevel versionToleranceLevel, bool forceStampVerification = false)
        {
            if (reader.recipes.ContainsKey(UnderlyingType))
            {
                // We do not need full stamp for recipe types.
                return;
            }

            if (StampHelpers.IsStampNeeded(this, reader.TreatCollectionAsUserObject))
            {
                ReadStructureStamp(reader, versionToleranceLevel, forceStampVerification);
            }
        }