public class org.apache.cassandra.io.sstable.metadata.MetadataSerializer implements org.apache.cassandra.io.sstable.metadata.IMetadataSerializer
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.io.sstable.metadata.MetadataSerializer
  super_class: java.lang.Object
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 50
            ldc Lorg/apache/cassandra/io/sstable/metadata/MetadataSerializer;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.io.sstable.metadata.MetadataSerializer.logger:Lorg/slf4j/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/io/sstable/metadata/MetadataSerializer;

  public void serialize(java.util.Map<org.apache.cassandra.io.sstable.metadata.MetadataType, org.apache.cassandra.io.sstable.metadata.MetadataComponent>, org.apache.cassandra.io.util.DataOutputPlus, org.apache.cassandra.io.sstable.format.Version);
    descriptor: (Ljava/util/Map;Lorg/apache/cassandra/io/util/DataOutputPlus;Lorg/apache/cassandra/io/sstable/format/Version;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=4
        start local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
        start local 1 // java.util.Map components
        start local 2 // org.apache.cassandra.io.util.DataOutputPlus out
        start local 3 // org.apache.cassandra.io.sstable.format.Version version
         0: .line 55
            aload 1 /* components */
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokestatic com.google.common.collect.Lists.newArrayList:(Ljava/lang/Iterable;)Ljava/util/ArrayList;
            astore 4 /* sortedComponents */
        start local 4 // java.util.List sortedComponents
         1: .line 56
            aload 4 /* sortedComponents */
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
         2: .line 59
            aload 2 /* out */
            aload 1 /* components */
            invokeinterface java.util.Map.size:()I
            invokeinterface org.apache.cassandra.io.util.DataOutputPlus.writeInt:(I)V
         3: .line 61
            iconst_4
            bipush 8
            aload 4 /* sortedComponents */
            invokeinterface java.util.List.size:()I
            imul
            iadd
            istore 5 /* lastPosition */
        start local 5 // int lastPosition
         4: .line 62
            aload 4 /* sortedComponents */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 10
      StackMap locals: org.apache.cassandra.io.sstable.metadata.MetadataSerializer java.util.Map org.apache.cassandra.io.util.DataOutputPlus org.apache.cassandra.io.sstable.format.Version java.util.List int top java.util.Iterator
      StackMap stack:
         5: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.metadata.MetadataComponent
            astore 6 /* component */
        start local 6 // org.apache.cassandra.io.sstable.metadata.MetadataComponent component
         6: .line 64
            aload 6 /* component */
            invokevirtual org.apache.cassandra.io.sstable.metadata.MetadataComponent.getType:()Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            astore 8 /* type */
        start local 8 // org.apache.cassandra.io.sstable.metadata.MetadataType type
         7: .line 66
            aload 2 /* out */
            aload 8 /* type */
            invokevirtual org.apache.cassandra.io.sstable.metadata.MetadataType.ordinal:()I
            invokeinterface org.apache.cassandra.io.util.DataOutputPlus.writeInt:(I)V
         8: .line 68
            aload 2 /* out */
            iload 5 /* lastPosition */
            invokeinterface org.apache.cassandra.io.util.DataOutputPlus.writeInt:(I)V
         9: .line 69
            iload 5 /* lastPosition */
            aload 8 /* type */
            getfield org.apache.cassandra.io.sstable.metadata.MetadataType.serializer:Lorg/apache/cassandra/io/sstable/metadata/IMetadataComponentSerializer;
            aload 3 /* version */
            aload 6 /* component */
            invokeinterface org.apache.cassandra.io.sstable.metadata.IMetadataComponentSerializer.serializedSize:(Lorg/apache/cassandra/io/sstable/format/Version;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;)I
            iadd
            istore 5 /* lastPosition */
        end local 8 // org.apache.cassandra.io.sstable.metadata.MetadataType type
        end local 6 // org.apache.cassandra.io.sstable.metadata.MetadataComponent component
        10: .line 62
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        11: .line 72
            aload 4 /* sortedComponents */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 14
      StackMap locals:
      StackMap stack:
        12: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.metadata.MetadataComponent
            astore 6 /* component */
        start local 6 // org.apache.cassandra.io.sstable.metadata.MetadataComponent component
        13: .line 74
            aload 6 /* component */
            invokevirtual org.apache.cassandra.io.sstable.metadata.MetadataComponent.getType:()Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            getfield org.apache.cassandra.io.sstable.metadata.MetadataType.serializer:Lorg/apache/cassandra/io/sstable/metadata/IMetadataComponentSerializer;
            aload 3 /* version */
            aload 6 /* component */
            aload 2 /* out */
            invokeinterface org.apache.cassandra.io.sstable.metadata.IMetadataComponentSerializer.serialize:(Lorg/apache/cassandra/io/sstable/format/Version;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;Lorg/apache/cassandra/io/util/DataOutputPlus;)V
        end local 6 // org.apache.cassandra.io.sstable.metadata.MetadataComponent component
        14: .line 72
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        15: .line 76
            return
        end local 5 // int lastPosition
        end local 4 // java.util.List sortedComponents
        end local 3 // org.apache.cassandra.io.sstable.format.Version version
        end local 2 // org.apache.cassandra.io.util.DataOutputPlus out
        end local 1 // java.util.Map components
        end local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   16     0              this  Lorg/apache/cassandra/io/sstable/metadata/MetadataSerializer;
            0   16     1        components  Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;
            0   16     2               out  Lorg/apache/cassandra/io/util/DataOutputPlus;
            0   16     3           version  Lorg/apache/cassandra/io/sstable/format/Version;
            1   16     4  sortedComponents  Ljava/util/List<Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;
            4   16     5      lastPosition  I
            6   10     6         component  Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;
            7   10     8              type  Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
           13   14     6         component  Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;Lorg/apache/cassandra/io/util/DataOutputPlus;Lorg/apache/cassandra/io/sstable/format/Version;)V
    MethodParameters:
            Name  Flags
      components  
      out         
      version     

  public java.util.Map<org.apache.cassandra.io.sstable.metadata.MetadataType, org.apache.cassandra.io.sstable.metadata.MetadataComponent> deserialize(org.apache.cassandra.io.sstable.Descriptor, java.util.EnumSet<org.apache.cassandra.io.sstable.metadata.MetadataType>);
    descriptor: (Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/util/EnumSet;)Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
        start local 1 // org.apache.cassandra.io.sstable.Descriptor descriptor
        start local 2 // java.util.EnumSet types
         0: .line 81
            getstatic org.apache.cassandra.io.sstable.metadata.MetadataSerializer.logger:Lorg/slf4j/Logger;
            ldc "Load metadata for {}"
            aload 1 /* descriptor */
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 82
            new java.io.File
            dup
            aload 1 /* descriptor */
            getstatic org.apache.cassandra.io.sstable.Component.STATS:Lorg/apache/cassandra/io/sstable/Component;
            invokevirtual org.apache.cassandra.io.sstable.Descriptor.filenameFor:(Lorg/apache/cassandra/io/sstable/Component;)Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 4 /* statsFile */
        start local 4 // java.io.File statsFile
         2: .line 83
            aload 4 /* statsFile */
            invokevirtual java.io.File.exists:()Z
            ifne 7
         3: .line 85
            getstatic org.apache.cassandra.io.sstable.metadata.MetadataSerializer.logger:Lorg/slf4j/Logger;
            ldc "No sstable stats for {}"
            aload 1 /* descriptor */
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;)V
         4: .line 86
            new java.util.EnumMap
            dup
            ldc Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            invokespecial java.util.EnumMap.<init>:(Ljava/lang/Class;)V
            astore 3 /* components */
        start local 3 // java.util.Map components
         5: .line 87
            aload 3 /* components */
            getstatic org.apache.cassandra.io.sstable.metadata.MetadataType.STATS:Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            invokestatic org.apache.cassandra.io.sstable.metadata.MetadataCollector.defaultStatsMetadata:()Lorg/apache/cassandra/io/sstable/metadata/StatsMetadata;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 88
            goto 16
        end local 3 // java.util.Map components
         7: .line 91
      StackMap locals: org.apache.cassandra.io.sstable.metadata.MetadataSerializer org.apache.cassandra.io.sstable.Descriptor java.util.EnumSet top java.io.File
      StackMap stack:
            aconst_null
            astore 5
            aconst_null
            astore 6
         8: aload 4 /* statsFile */
            invokestatic org.apache.cassandra.io.util.RandomAccessReader.open:(Ljava/io/File;)Lorg/apache/cassandra/io/util/RandomAccessReader;
            astore 7 /* r */
        start local 7 // org.apache.cassandra.io.util.RandomAccessReader r
         9: .line 93
            aload 0 /* this */
            aload 1 /* descriptor */
            aload 7 /* r */
            aload 2 /* types */
            invokevirtual org.apache.cassandra.io.sstable.metadata.MetadataSerializer.deserialize:(Lorg/apache/cassandra/io/sstable/Descriptor;Lorg/apache/cassandra/io/util/FileDataInput;Ljava/util/EnumSet;)Ljava/util/Map;
            astore 3 /* components */
        start local 3 // java.util.Map components
        10: .line 94
            aload 7 /* r */
            ifnull 16
            aload 7 /* r */
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.close:()V
            goto 16
        end local 3 // java.util.Map components
      StackMap locals: org.apache.cassandra.io.sstable.metadata.MetadataSerializer org.apache.cassandra.io.sstable.Descriptor java.util.EnumSet top java.io.File java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.util.RandomAccessReader
      StackMap stack: java.lang.Throwable
        11: astore 5
            aload 7 /* r */
            ifnull 12
            aload 7 /* r */
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.close:()V
        end local 7 // org.apache.cassandra.io.util.RandomAccessReader r
      StackMap locals:
      StackMap stack:
        12: aload 5
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 6
            aload 5
            ifnonnull 14
            aload 6
            astore 5
            goto 15
      StackMap locals:
      StackMap stack:
        14: aload 5
            aload 6
            if_acmpeq 15
            aload 5
            aload 6
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        15: aload 5
            athrow
        start local 3 // java.util.Map components
        16: .line 96
      StackMap locals: org.apache.cassandra.io.sstable.metadata.MetadataSerializer org.apache.cassandra.io.sstable.Descriptor java.util.EnumSet java.util.Map java.io.File
      StackMap stack:
            aload 3 /* components */
            areturn
        end local 4 // java.io.File statsFile
        end local 3 // java.util.Map components
        end local 2 // java.util.EnumSet types
        end local 1 // org.apache.cassandra.io.sstable.Descriptor descriptor
        end local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   17     0        this  Lorg/apache/cassandra/io/sstable/metadata/MetadataSerializer;
            0   17     1  descriptor  Lorg/apache/cassandra/io/sstable/Descriptor;
            0   17     2       types  Ljava/util/EnumSet<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;>;
            5    7     3  components  Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;
           10   11     3  components  Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;
           16   17     3  components  Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;
            2   17     4   statsFile  Ljava/io/File;
            9   12     7           r  Lorg/apache/cassandra/io/util/RandomAccessReader;
      Exception table:
        from    to  target  type
           9    10      11  any
           8    13      13  any
    Exceptions:
      throws java.io.IOException
    Signature: (Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/util/EnumSet<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;>;)Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;
    MethodParameters:
            Name  Flags
      descriptor  
      types       

  public org.apache.cassandra.io.sstable.metadata.MetadataComponent deserialize(org.apache.cassandra.io.sstable.Descriptor, org.apache.cassandra.io.sstable.metadata.MetadataType);
    descriptor: (Lorg/apache/cassandra/io/sstable/Descriptor;Lorg/apache/cassandra/io/sstable/metadata/MetadataType;)Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
        start local 1 // org.apache.cassandra.io.sstable.Descriptor descriptor
        start local 2 // org.apache.cassandra.io.sstable.metadata.MetadataType type
         0: .line 101
            aload 0 /* this */
            aload 1 /* descriptor */
            aload 2 /* type */
            invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
            invokevirtual org.apache.cassandra.io.sstable.metadata.MetadataSerializer.deserialize:(Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/util/EnumSet;)Ljava/util/Map;
            aload 2 /* type */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.metadata.MetadataComponent
            areturn
        end local 2 // org.apache.cassandra.io.sstable.metadata.MetadataType type
        end local 1 // org.apache.cassandra.io.sstable.Descriptor descriptor
        end local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/apache/cassandra/io/sstable/metadata/MetadataSerializer;
            0    1     1  descriptor  Lorg/apache/cassandra/io/sstable/Descriptor;
            0    1     2        type  Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      descriptor  
      type        

  public java.util.Map<org.apache.cassandra.io.sstable.metadata.MetadataType, org.apache.cassandra.io.sstable.metadata.MetadataComponent> deserialize(org.apache.cassandra.io.sstable.Descriptor, org.apache.cassandra.io.util.FileDataInput, java.util.EnumSet<org.apache.cassandra.io.sstable.metadata.MetadataType>);
    descriptor: (Lorg/apache/cassandra/io/sstable/Descriptor;Lorg/apache/cassandra/io/util/FileDataInput;Ljava/util/EnumSet;)Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=12, args_size=4
        start local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
        start local 1 // org.apache.cassandra.io.sstable.Descriptor descriptor
        start local 2 // org.apache.cassandra.io.util.FileDataInput in
        start local 3 // java.util.EnumSet types
         0: .line 106
            new java.util.EnumMap
            dup
            ldc Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            invokespecial java.util.EnumMap.<init>:(Ljava/lang/Class;)V
            astore 4 /* components */
        start local 4 // java.util.Map components
         1: .line 108
            aload 2 /* in */
            invokeinterface org.apache.cassandra.io.util.FileDataInput.readInt:()I
            istore 5 /* numComponents */
        start local 5 // int numComponents
         2: .line 110
            new java.util.EnumMap
            dup
            ldc Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            invokespecial java.util.EnumMap.<init>:(Ljava/lang/Class;)V
            astore 6 /* toc */
        start local 6 // java.util.Map toc
         3: .line 111
            invokestatic org.apache.cassandra.io.sstable.metadata.MetadataType.values:()[Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            astore 7 /* values */
        start local 7 // org.apache.cassandra.io.sstable.metadata.MetadataType[] values
         4: .line 112
            iconst_0
            istore 8 /* i */
        start local 8 // int i
         5: goto 8
         6: .line 114
      StackMap locals: org.apache.cassandra.io.sstable.metadata.MetadataSerializer org.apache.cassandra.io.sstable.Descriptor org.apache.cassandra.io.util.FileDataInput java.util.EnumSet java.util.Map int java.util.Map org.apache.cassandra.io.sstable.metadata.MetadataType[] int
      StackMap stack:
            aload 6 /* toc */
            aload 7 /* values */
            aload 2 /* in */
            invokeinterface org.apache.cassandra.io.util.FileDataInput.readInt:()I
            aaload
            aload 2 /* in */
            invokeinterface org.apache.cassandra.io.util.FileDataInput.readInt:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 112
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 8 /* i */
            iload 5 /* numComponents */
            if_icmplt 6
        end local 8 // int i
         9: .line 116
            aload 3 /* types */
            invokevirtual java.util.EnumSet.iterator:()Ljava/util/Iterator;
            astore 9
            goto 16
      StackMap locals: org.apache.cassandra.io.sstable.metadata.MetadataSerializer org.apache.cassandra.io.sstable.Descriptor org.apache.cassandra.io.util.FileDataInput java.util.EnumSet java.util.Map int java.util.Map org.apache.cassandra.io.sstable.metadata.MetadataType[] top java.util.Iterator
      StackMap stack:
        10: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.metadata.MetadataType
            astore 8 /* type */
        start local 8 // org.apache.cassandra.io.sstable.metadata.MetadataType type
        11: .line 118
            aload 6 /* toc */
            aload 8 /* type */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 10 /* offset */
        start local 10 // java.lang.Integer offset
        12: .line 119
            aload 10 /* offset */
            ifnull 16
        13: .line 121
            aload 2 /* in */
            aload 10 /* offset */
            invokevirtual java.lang.Integer.intValue:()I
            i2l
            invokeinterface org.apache.cassandra.io.util.FileDataInput.seek:(J)V
        14: .line 122
            aload 8 /* type */
            getfield org.apache.cassandra.io.sstable.metadata.MetadataType.serializer:Lorg/apache/cassandra/io/sstable/metadata/IMetadataComponentSerializer;
            aload 1 /* descriptor */
            getfield org.apache.cassandra.io.sstable.Descriptor.version:Lorg/apache/cassandra/io/sstable/format/Version;
            aload 2 /* in */
            invokeinterface org.apache.cassandra.io.sstable.metadata.IMetadataComponentSerializer.deserialize:(Lorg/apache/cassandra/io/sstable/format/Version;Lorg/apache/cassandra/io/util/DataInputPlus;)Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;
            astore 11 /* component */
        start local 11 // org.apache.cassandra.io.sstable.metadata.MetadataComponent component
        15: .line 123
            aload 4 /* components */
            aload 8 /* type */
            aload 11 /* component */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 11 // org.apache.cassandra.io.sstable.metadata.MetadataComponent component
        end local 10 // java.lang.Integer offset
        end local 8 // org.apache.cassandra.io.sstable.metadata.MetadataType type
        16: .line 116
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        17: .line 126
            aload 4 /* components */
            areturn
        end local 7 // org.apache.cassandra.io.sstable.metadata.MetadataType[] values
        end local 6 // java.util.Map toc
        end local 5 // int numComponents
        end local 4 // java.util.Map components
        end local 3 // java.util.EnumSet types
        end local 2 // org.apache.cassandra.io.util.FileDataInput in
        end local 1 // org.apache.cassandra.io.sstable.Descriptor descriptor
        end local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0           this  Lorg/apache/cassandra/io/sstable/metadata/MetadataSerializer;
            0   18     1     descriptor  Lorg/apache/cassandra/io/sstable/Descriptor;
            0   18     2             in  Lorg/apache/cassandra/io/util/FileDataInput;
            0   18     3          types  Ljava/util/EnumSet<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;>;
            1   18     4     components  Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;
            2   18     5  numComponents  I
            3   18     6            toc  Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Ljava/lang/Integer;>;
            4   18     7         values  [Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            5    9     8              i  I
           11   16     8           type  Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
           12   16    10         offset  Ljava/lang/Integer;
           15   16    11      component  Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;
    Exceptions:
      throws java.io.IOException
    Signature: (Lorg/apache/cassandra/io/sstable/Descriptor;Lorg/apache/cassandra/io/util/FileDataInput;Ljava/util/EnumSet<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;>;)Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;
    MethodParameters:
            Name  Flags
      descriptor  
      in          
      types       

  public void mutateLevel(org.apache.cassandra.io.sstable.Descriptor, int);
    descriptor: (Lorg/apache/cassandra/io/sstable/Descriptor;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
        start local 1 // org.apache.cassandra.io.sstable.Descriptor descriptor
        start local 2 // int newLevel
         0: .line 131
            getstatic org.apache.cassandra.io.sstable.metadata.MetadataSerializer.logger:Lorg/slf4j/Logger;
            ldc "Mutating {} to level {}"
            aload 1 /* descriptor */
            getstatic org.apache.cassandra.io.sstable.Component.STATS:Lorg/apache/cassandra/io/sstable/Component;
            invokevirtual org.apache.cassandra.io.sstable.Descriptor.filenameFor:(Lorg/apache/cassandra/io/sstable/Component;)Ljava/lang/String;
            iload 2 /* newLevel */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 132
            aload 0 /* this */
            aload 1 /* descriptor */
            ldc Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            invokestatic java.util.EnumSet.allOf:(Ljava/lang/Class;)Ljava/util/EnumSet;
            invokevirtual org.apache.cassandra.io.sstable.metadata.MetadataSerializer.deserialize:(Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/util/EnumSet;)Ljava/util/Map;
            astore 3 /* currentComponents */
        start local 3 // java.util.Map currentComponents
         2: .line 133
            aload 3 /* currentComponents */
            getstatic org.apache.cassandra.io.sstable.metadata.MetadataType.STATS:Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.metadata.StatsMetadata
            astore 4 /* stats */
        start local 4 // org.apache.cassandra.io.sstable.metadata.StatsMetadata stats
         3: .line 135
            aload 3 /* currentComponents */
            getstatic org.apache.cassandra.io.sstable.metadata.MetadataType.STATS:Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            aload 4 /* stats */
            iload 2 /* newLevel */
            invokevirtual org.apache.cassandra.io.sstable.metadata.StatsMetadata.mutateLevel:(I)Lorg/apache/cassandra/io/sstable/metadata/StatsMetadata;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 136
            aload 0 /* this */
            aload 1 /* descriptor */
            aload 3 /* currentComponents */
            invokevirtual org.apache.cassandra.io.sstable.metadata.MetadataSerializer.rewriteSSTableMetadata:(Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/util/Map;)V
         5: .line 137
            return
        end local 4 // org.apache.cassandra.io.sstable.metadata.StatsMetadata stats
        end local 3 // java.util.Map currentComponents
        end local 2 // int newLevel
        end local 1 // org.apache.cassandra.io.sstable.Descriptor descriptor
        end local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    6     0               this  Lorg/apache/cassandra/io/sstable/metadata/MetadataSerializer;
            0    6     1         descriptor  Lorg/apache/cassandra/io/sstable/Descriptor;
            0    6     2           newLevel  I
            2    6     3  currentComponents  Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;
            3    6     4              stats  Lorg/apache/cassandra/io/sstable/metadata/StatsMetadata;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      descriptor  
      newLevel    

  public void mutateRepairedAt(org.apache.cassandra.io.sstable.Descriptor, long);
    descriptor: (Lorg/apache/cassandra/io/sstable/Descriptor;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
        start local 1 // org.apache.cassandra.io.sstable.Descriptor descriptor
        start local 2 // long newRepairedAt
         0: .line 141
            getstatic org.apache.cassandra.io.sstable.metadata.MetadataSerializer.logger:Lorg/slf4j/Logger;
            ldc "Mutating {} to repairedAt time {}"
            aload 1 /* descriptor */
            getstatic org.apache.cassandra.io.sstable.Component.STATS:Lorg/apache/cassandra/io/sstable/Component;
            invokevirtual org.apache.cassandra.io.sstable.Descriptor.filenameFor:(Lorg/apache/cassandra/io/sstable/Component;)Ljava/lang/String;
            lload 2 /* newRepairedAt */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 142
            aload 0 /* this */
            aload 1 /* descriptor */
            ldc Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            invokestatic java.util.EnumSet.allOf:(Ljava/lang/Class;)Ljava/util/EnumSet;
            invokevirtual org.apache.cassandra.io.sstable.metadata.MetadataSerializer.deserialize:(Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/util/EnumSet;)Ljava/util/Map;
            astore 4 /* currentComponents */
        start local 4 // java.util.Map currentComponents
         2: .line 143
            aload 4 /* currentComponents */
            getstatic org.apache.cassandra.io.sstable.metadata.MetadataType.STATS:Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.metadata.StatsMetadata
            astore 5 /* stats */
        start local 5 // org.apache.cassandra.io.sstable.metadata.StatsMetadata stats
         3: .line 145
            aload 4 /* currentComponents */
            getstatic org.apache.cassandra.io.sstable.metadata.MetadataType.STATS:Lorg/apache/cassandra/io/sstable/metadata/MetadataType;
            aload 5 /* stats */
            lload 2 /* newRepairedAt */
            invokevirtual org.apache.cassandra.io.sstable.metadata.StatsMetadata.mutateRepairedAt:(J)Lorg/apache/cassandra/io/sstable/metadata/StatsMetadata;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 146
            aload 0 /* this */
            aload 1 /* descriptor */
            aload 4 /* currentComponents */
            invokevirtual org.apache.cassandra.io.sstable.metadata.MetadataSerializer.rewriteSSTableMetadata:(Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/util/Map;)V
         5: .line 147
            return
        end local 5 // org.apache.cassandra.io.sstable.metadata.StatsMetadata stats
        end local 4 // java.util.Map currentComponents
        end local 2 // long newRepairedAt
        end local 1 // org.apache.cassandra.io.sstable.Descriptor descriptor
        end local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    6     0               this  Lorg/apache/cassandra/io/sstable/metadata/MetadataSerializer;
            0    6     1         descriptor  Lorg/apache/cassandra/io/sstable/Descriptor;
            0    6     2      newRepairedAt  J
            2    6     4  currentComponents  Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;
            3    6     5              stats  Lorg/apache/cassandra/io/sstable/metadata/StatsMetadata;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      descriptor     
      newRepairedAt  

  private void rewriteSSTableMetadata(org.apache.cassandra.io.sstable.Descriptor, java.util.Map<org.apache.cassandra.io.sstable.metadata.MetadataType, org.apache.cassandra.io.sstable.metadata.MetadataComponent>);
    descriptor: (Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/util/Map;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
        start local 1 // org.apache.cassandra.io.sstable.Descriptor descriptor
        start local 2 // java.util.Map currentComponents
         0: .line 151
            aload 1 /* descriptor */
            getstatic org.apache.cassandra.io.sstable.Component.STATS:Lorg/apache/cassandra/io/sstable/Component;
            invokevirtual org.apache.cassandra.io.sstable.Descriptor.tmpFilenameFor:(Lorg/apache/cassandra/io/sstable/Component;)Ljava/lang/String;
            astore 3 /* filePath */
        start local 3 // java.lang.String filePath
         1: .line 152
            aconst_null
            astore 4
            aconst_null
            astore 5
         2: new org.apache.cassandra.io.util.BufferedDataOutputStreamPlus
            dup
            new java.io.FileOutputStream
            dup
            aload 3 /* filePath */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/lang/String;)V
            invokespecial org.apache.cassandra.io.util.BufferedDataOutputStreamPlus.<init>:(Ljava/io/FileOutputStream;)V
            astore 6 /* out */
        start local 6 // org.apache.cassandra.io.util.DataOutputStreamPlus out
         3: .line 154
            aload 0 /* this */
            aload 2 /* currentComponents */
            aload 6 /* out */
            aload 1 /* descriptor */
            getfield org.apache.cassandra.io.sstable.Descriptor.version:Lorg/apache/cassandra/io/sstable/format/Version;
            invokevirtual org.apache.cassandra.io.sstable.metadata.MetadataSerializer.serialize:(Ljava/util/Map;Lorg/apache/cassandra/io/util/DataOutputPlus;Lorg/apache/cassandra/io/sstable/format/Version;)V
         4: .line 155
            aload 6 /* out */
            invokevirtual org.apache.cassandra.io.util.DataOutputStreamPlus.flush:()V
         5: .line 156
            aload 6 /* out */
            ifnull 11
            aload 6 /* out */
            invokevirtual org.apache.cassandra.io.util.DataOutputStreamPlus.close:()V
            goto 11
      StackMap locals: org.apache.cassandra.io.sstable.metadata.MetadataSerializer org.apache.cassandra.io.sstable.Descriptor java.util.Map java.lang.String java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.util.DataOutputStreamPlus
      StackMap stack: java.lang.Throwable
         6: astore 4
            aload 6 /* out */
            ifnull 7
            aload 6 /* out */
            invokevirtual org.apache.cassandra.io.util.DataOutputStreamPlus.close:()V
        end local 6 // org.apache.cassandra.io.util.DataOutputStreamPlus out
      StackMap locals:
      StackMap stack:
         7: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: astore 5
            aload 4
            ifnonnull 9
            aload 5
            astore 4
            goto 10
      StackMap locals:
      StackMap stack:
         9: aload 4
            aload 5
            if_acmpeq 10
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        10: aload 4
            athrow
        11: .line 158
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.utils.FBUtilities.isWindows:Z
            ifeq 13
        12: .line 159
            aload 1 /* descriptor */
            getstatic org.apache.cassandra.io.sstable.Component.STATS:Lorg/apache/cassandra/io/sstable/Component;
            invokevirtual org.apache.cassandra.io.sstable.Descriptor.filenameFor:(Lorg/apache/cassandra/io/sstable/Component;)Ljava/lang/String;
            invokestatic org.apache.cassandra.io.util.FileUtils.delete:(Ljava/lang/String;)Z
            pop
        13: .line 160
      StackMap locals:
      StackMap stack:
            aload 3 /* filePath */
            aload 1 /* descriptor */
            getstatic org.apache.cassandra.io.sstable.Component.STATS:Lorg/apache/cassandra/io/sstable/Component;
            invokevirtual org.apache.cassandra.io.sstable.Descriptor.filenameFor:(Lorg/apache/cassandra/io/sstable/Component;)Ljava/lang/String;
            invokestatic org.apache.cassandra.io.util.FileUtils.renameWithConfirm:(Ljava/lang/String;Ljava/lang/String;)V
        14: .line 162
            return
        end local 3 // java.lang.String filePath
        end local 2 // java.util.Map currentComponents
        end local 1 // org.apache.cassandra.io.sstable.Descriptor descriptor
        end local 0 // org.apache.cassandra.io.sstable.metadata.MetadataSerializer this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   15     0               this  Lorg/apache/cassandra/io/sstable/metadata/MetadataSerializer;
            0   15     1         descriptor  Lorg/apache/cassandra/io/sstable/Descriptor;
            0   15     2  currentComponents  Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;
            1   15     3           filePath  Ljava/lang/String;
            3    7     6                out  Lorg/apache/cassandra/io/util/DataOutputStreamPlus;
      Exception table:
        from    to  target  type
           3     5       6  any
           2     8       8  any
    Exceptions:
      throws java.io.IOException
    Signature: (Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/util/Map<Lorg/apache/cassandra/io/sstable/metadata/MetadataType;Lorg/apache/cassandra/io/sstable/metadata/MetadataComponent;>;)V
    MethodParameters:
                   Name  Flags
      descriptor         
      currentComponents  
}
SourceFile: "MetadataSerializer.java"