public final class com.mongodb.TagSet implements java.lang.Iterable<com.mongodb.Tag>
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.mongodb.TagSet
  super_class: java.lang.Object
{
  private final java.util.List<com.mongodb.Tag> wrapped;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lcom/mongodb/Tag;>;

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.TagSet this
         0: .line 45
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 46
            aload 0 /* this */
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            putfield com.mongodb.TagSet.wrapped:Ljava/util/List;
         2: .line 47
            return
        end local 0 // com.mongodb.TagSet this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/TagSet;

  public void <init>(com.mongodb.Tag);
    descriptor: (Lcom/mongodb/Tag;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.TagSet this
        start local 1 // com.mongodb.Tag tag
         0: .line 54
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 55
            ldc "tag"
            aload 1 /* tag */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 56
            aload 0 /* this */
            aload 1 /* tag */
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            putfield com.mongodb.TagSet.wrapped:Ljava/util/List;
         3: .line 57
            return
        end local 1 // com.mongodb.Tag tag
        end local 0 // com.mongodb.TagSet this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/mongodb/TagSet;
            0    4     1   tag  Lcom/mongodb/Tag;
    MethodParameters:
      Name  Flags
      tag   final

  public void <init>(java.util.List<com.mongodb.Tag>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // com.mongodb.TagSet this
        start local 1 // java.util.List tagList
         0: .line 64
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 65
            ldc "tagList"
            aload 1 /* tagList */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 68
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 2 /* tagNames */
        start local 2 // java.util.Set tagNames
         3: .line 69
            aload 1 /* tagList */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 9
      StackMap locals: com.mongodb.TagSet java.util.List java.util.Set top java.util.Iterator
      StackMap stack:
         4: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.mongodb.Tag
            astore 3 /* tag */
        start local 3 // com.mongodb.Tag tag
         5: .line 70
            aload 3 /* tag */
            ifnonnull 7
         6: .line 71
            new java.lang.IllegalArgumentException
            dup
            ldc "Null tags are not allowed"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 73
      StackMap locals: com.mongodb.TagSet java.util.List java.util.Set com.mongodb.Tag java.util.Iterator
      StackMap stack:
            aload 2 /* tagNames */
            aload 3 /* tag */
            invokevirtual com.mongodb.Tag.getName:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            ifne 9
         8: .line 74
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Duplicate tag names not allowed in a tag set: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* tag */
            invokevirtual com.mongodb.Tag.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // com.mongodb.Tag tag
         9: .line 69
      StackMap locals: com.mongodb.TagSet java.util.List java.util.Set top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        10: .line 77
            new java.util.ArrayList
            dup
            aload 1 /* tagList */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 3 /* copy */
        start local 3 // java.util.ArrayList copy
        11: .line 78
            aload 3 /* copy */
            new com.mongodb.TagSet$1
            dup
            aload 0 /* this */
            invokespecial com.mongodb.TagSet$1.<init>:(Lcom/mongodb/TagSet;)V
            invokestatic java.util.Collections.sort:(Ljava/util/List;Ljava/util/Comparator;)V
        12: .line 84
            aload 0 /* this */
            aload 3 /* copy */
            invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
            putfield com.mongodb.TagSet.wrapped:Ljava/util/List;
        13: .line 85
            return
        end local 3 // java.util.ArrayList copy
        end local 2 // java.util.Set tagNames
        end local 1 // java.util.List tagList
        end local 0 // com.mongodb.TagSet this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0      this  Lcom/mongodb/TagSet;
            0   14     1   tagList  Ljava/util/List<Lcom/mongodb/Tag;>;
            3   14     2  tagNames  Ljava/util/Set<Ljava/lang/String;>;
            5    9     3       tag  Lcom/mongodb/Tag;
           11   14     3      copy  Ljava/util/ArrayList<Lcom/mongodb/Tag;>;
    Signature: (Ljava/util/List<Lcom/mongodb/Tag;>;)V
    MethodParameters:
         Name  Flags
      tagList  final

  public java.util.Iterator<com.mongodb.Tag> iterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.TagSet this
         0: .line 89
            aload 0 /* this */
            getfield com.mongodb.TagSet.wrapped:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            areturn
        end local 0 // com.mongodb.TagSet this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/TagSet;
    Signature: ()Ljava/util/Iterator<Lcom/mongodb/Tag;>;

  public boolean containsAll(com.mongodb.TagSet);
    descriptor: (Lcom/mongodb/TagSet;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.TagSet this
        start local 1 // com.mongodb.TagSet tagSet
         0: .line 99
            aload 0 /* this */
            getfield com.mongodb.TagSet.wrapped:Ljava/util/List;
            aload 1 /* tagSet */
            getfield com.mongodb.TagSet.wrapped:Ljava/util/List;
            invokeinterface java.util.List.containsAll:(Ljava/util/Collection;)Z
            ireturn
        end local 1 // com.mongodb.TagSet tagSet
        end local 0 // com.mongodb.TagSet this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/mongodb/TagSet;
            0    1     1  tagSet  Lcom/mongodb/TagSet;
    MethodParameters:
        Name  Flags
      tagSet  final

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.mongodb.TagSet this
        start local 1 // java.lang.Object o
         0: .line 104
            aload 0 /* this */
            aload 1 /* o */
            if_acmpne 2
         1: .line 105
            iconst_1
            ireturn
         2: .line 107
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            ifnull 3
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 1 /* o */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            if_acmpeq 4
         3: .line 108
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         4: .line 111
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            checkcast com.mongodb.TagSet
            astore 2 /* tags */
        start local 2 // com.mongodb.TagSet tags
         5: .line 113
            aload 0 /* this */
            getfield com.mongodb.TagSet.wrapped:Ljava/util/List;
            aload 2 /* tags */
            getfield com.mongodb.TagSet.wrapped:Ljava/util/List;
            invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
            ifne 7
         6: .line 114
            iconst_0
            ireturn
         7: .line 117
      StackMap locals: com.mongodb.TagSet
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // com.mongodb.TagSet tags
        end local 1 // java.lang.Object o
        end local 0 // com.mongodb.TagSet this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/mongodb/TagSet;
            0    8     1     o  Ljava/lang/Object;
            5    8     2  tags  Lcom/mongodb/TagSet;
    MethodParameters:
      Name  Flags
      o     final

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.TagSet this
         0: .line 122
            aload 0 /* this */
            getfield com.mongodb.TagSet.wrapped:Ljava/util/List;
            invokeinterface java.util.List.hashCode:()I
            ireturn
        end local 0 // com.mongodb.TagSet this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/TagSet;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.TagSet this
         0: .line 127
            new java.lang.StringBuilder
            dup
            ldc "TagSet{"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         1: .line 128
            aload 0 /* this */
            getfield com.mongodb.TagSet.wrapped:Ljava/util/List;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         2: .line 129
            bipush 125
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
         3: .line 127
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.mongodb.TagSet this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/mongodb/TagSet;
}
Signature: Ljava/lang/Object;Ljava/lang/Iterable<Lcom/mongodb/Tag;>;
SourceFile: "TagSet.java"
NestMembers:
  com.mongodb.TagSet$1
InnerClasses:
  com.mongodb.TagSet$1
    RuntimeVisibleAnnotations: 
      com.mongodb.annotations.Immutable()