code: @Override
      public void serialize(Map<MetadataType, MetadataComponent> components, DataOutputPlus out) throws IOException
      {
          ValidationMetadata validation = (ValidationMetadata) components.get(MetadataType.VALIDATION);
          StatsMetadata stats = (StatsMetadata) components.get(MetadataType.STATS);
          CompactionMetadata compaction = (CompactionMetadata) components.get(MetadataType.COMPACTION);
  
          assert validation != null && stats != null && compaction != null && validation.partitioner != null;
  
          EstimatedHistogram.serializer.serialize(stats.estimatedRowSize, out);
          EstimatedHistogram.serializer.serialize(stats.estimatedColumnCount, out);
          ReplayPosition.serializer.serialize(stats.replayPosition, out);
          out.writeLong(stats.minTimestamp);
          out.writeLong(stats.maxTimestamp);
          out.writeInt(stats.maxLocalDeletionTime);
          out.writeDouble(validation.bloomFilterFPChance);
          out.writeDouble(stats.compressionRatio);
          out.writeUTF(validation.partitioner);
          out.writeInt(compaction.ancestors.size());
          for (Integer g : compaction.ancestors)
              out.writeInt(g);
          StreamingHistogram.serializer.serialize(stats.estimatedTombstoneDropTime, out);
          out.writeInt(stats.sstableLevel);
          out.writeInt(stats.minColumnNames.size());
          for (ByteBuffer columnName : stats.minColumnNames)
              ByteBufferUtil.writeWithShortLength(columnName, out);
          out.writeInt(stats.maxColumnNames.size());
          for (ByteBuffer columnName : stats.maxColumnNames)
              ByteBufferUtil.writeWithShortLength(columnName, out);
      }
docs: Legacy serialization is only used for SSTable level reset.