public class org.codehaus.plexus.util.CollectionUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.codehaus.plexus.util.CollectionUtils
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.codehaus.plexus.util.CollectionUtils this
         0: .line 33
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.codehaus.plexus.util.CollectionUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/codehaus/plexus/util/CollectionUtils;

  public static <K, V> java.util.Map<K, V> mergeMaps(java.util.Map<K, V>, java.util.Map<K, V>);
    descriptor: (Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // java.util.Map dominantMap
        start local 1 // java.util.Map recessiveMap
         0: .line 52
            aload 0 /* dominantMap */
            ifnonnull 2
            aload 1 /* recessiveMap */
            ifnonnull 2
         1: .line 54
            aconst_null
            areturn
         2: .line 57
      StackMap locals:
      StackMap stack:
            aload 0 /* dominantMap */
            ifnull 4
            aload 1 /* recessiveMap */
            ifnonnull 4
         3: .line 59
            aload 0 /* dominantMap */
            areturn
         4: .line 62
      StackMap locals:
      StackMap stack:
            aload 0 /* dominantMap */
            ifnonnull 6
         5: .line 64
            aload 1 /* recessiveMap */
            areturn
         6: .line 67
      StackMap locals:
      StackMap stack:
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* result */
        start local 2 // java.util.Map result
         7: .line 70
            aload 0 /* dominantMap */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            astore 3 /* dominantMapKeys */
        start local 3 // java.util.Set dominantMapKeys
         8: .line 71
            aload 1 /* recessiveMap */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            astore 4 /* recessiveMapKeys */
        start local 4 // java.util.Set recessiveMapKeys
         9: .line 77
            aload 4 /* recessiveMapKeys */
        10: .line 78
            aload 3 /* dominantMapKeys */
            aload 4 /* recessiveMapKeys */
            invokestatic org.codehaus.plexus.util.CollectionUtils.intersection:(Ljava/util/Collection;Ljava/util/Collection;)Ljava/util/Collection;
        11: .line 77
            invokestatic org.codehaus.plexus.util.CollectionUtils.subtract:(Ljava/util/Collection;Ljava/util/Collection;)Ljava/util/Collection;
        12: .line 76
            astore 5 /* contributingRecessiveKeys */
        start local 5 // java.util.Collection contributingRecessiveKeys
        13: .line 80
            aload 2 /* result */
            aload 0 /* dominantMap */
            invokeinterface java.util.Map.putAll:(Ljava/util/Map;)V
        14: .line 84
            aload 5 /* contributingRecessiveKeys */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 7
            goto 17
      StackMap locals: java.util.Map java.util.Map java.util.Map java.util.Set java.util.Set java.util.Collection top java.util.Iterator
      StackMap stack:
        15: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Object
            astore 6 /* key */
        start local 6 // java.lang.Object key
        16: .line 86
            aload 2 /* result */
            aload 6 /* key */
            aload 1 /* recessiveMap */
            aload 6 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // java.lang.Object key
        17: .line 84
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        18: .line 89
            aload 2 /* result */
            areturn
        end local 5 // java.util.Collection contributingRecessiveKeys
        end local 4 // java.util.Set recessiveMapKeys
        end local 3 // java.util.Set dominantMapKeys
        end local 2 // java.util.Map result
        end local 1 // java.util.Map recessiveMap
        end local 0 // java.util.Map dominantMap
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   19     0                dominantMap  Ljava/util/Map<TK;TV;>;
            0   19     1               recessiveMap  Ljava/util/Map<TK;TV;>;
            7   19     2                     result  Ljava/util/Map<TK;TV;>;
            8   19     3            dominantMapKeys  Ljava/util/Set<TK;>;
            9   19     4           recessiveMapKeys  Ljava/util/Set<TK;>;
           13   19     5  contributingRecessiveKeys  Ljava/util/Collection<TK;>;
           16   17     6                        key  TK;
    Signature: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Map<TK;TV;>;Ljava/util/Map<TK;TV;>;)Ljava/util/Map<TK;TV;>;
    MethodParameters:
              Name  Flags
      dominantMap   
      recessiveMap  

  public static <K, V> java.util.Map<K, V> mergeMaps(java.util.Map<K, V>[]);
    descriptor: ([Ljava/util/Map;)Ljava/util/Map;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.util.Map[] maps
         0: .line 103
            aload 0 /* maps */
            arraylength
            ifne 3
         1: .line 105
            aconst_null
            astore 1 /* result */
        start local 1 // java.util.Map result
         2: .line 106
            goto 12
        end local 1 // java.util.Map result
         3: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* maps */
            arraylength
            iconst_1
            if_icmpne 6
         4: .line 109
            aload 0 /* maps */
            iconst_0
            aaload
            astore 1 /* result */
        start local 1 // java.util.Map result
         5: .line 110
            goto 12
        end local 1 // java.util.Map result
         6: .line 113
      StackMap locals:
      StackMap stack:
            aload 0 /* maps */
            iconst_0
            aaload
            aload 0 /* maps */
            iconst_1
            aaload
            invokestatic org.codehaus.plexus.util.CollectionUtils.mergeMaps:(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
            astore 1 /* result */
        start local 1 // java.util.Map result
         7: .line 115
            iconst_2
            istore 2 /* i */
        start local 2 // int i
         8: goto 11
         9: .line 117
      StackMap locals: java.util.Map int
      StackMap stack:
            aload 1 /* result */
            aload 0 /* maps */
            iload 2 /* i */
            aaload
            invokestatic org.codehaus.plexus.util.CollectionUtils.mergeMaps:(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
            astore 1 /* result */
        10: .line 115
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 2 /* i */
            aload 0 /* maps */
            arraylength
            if_icmplt 9
        end local 2 // int i
        12: .line 121
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            areturn
        end local 1 // java.util.Map result
        end local 0 // java.util.Map[] maps
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    maps  [Ljava/util/Map;
            2    3     1  result  Ljava/util/Map<TK;TV;>;
            5    6     1  result  Ljava/util/Map<TK;TV;>;
            7   13     1  result  Ljava/util/Map<TK;TV;>;
            8   12     2       i  I
    Signature: <K:Ljava/lang/Object;V:Ljava/lang/Object;>([Ljava/util/Map<TK;TV;>;)Ljava/util/Map<TK;TV;>;
    MethodParameters:
      Name  Flags
      maps  

  public static <E> java.util.Collection<E> intersection(java.util.Collection<E>, java.util.Collection<E>);
    descriptor: (Ljava/util/Collection;Ljava/util/Collection;)Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=10, args_size=2
        start local 0 // java.util.Collection a
        start local 1 // java.util.Collection b
         0: .line 137
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* list */
        start local 2 // java.util.ArrayList list
         1: .line 138
            aload 0 /* a */
            invokestatic org.codehaus.plexus.util.CollectionUtils.getCardinalityMap:(Ljava/util/Collection;)Ljava/util/Map;
            astore 3 /* mapa */
        start local 3 // java.util.Map mapa
         2: .line 139
            aload 1 /* b */
            invokestatic org.codehaus.plexus.util.CollectionUtils.getCardinalityMap:(Ljava/util/Collection;)Ljava/util/Map;
            astore 4 /* mapb */
        start local 4 // java.util.Map mapb
         3: .line 140
            new java.util.HashSet
            dup
            aload 0 /* a */
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            astore 5 /* elts */
        start local 5 // java.util.Set elts
         4: .line 141
            aload 5 /* elts */
            aload 1 /* b */
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
         5: .line 142
            aload 5 /* elts */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 13
      StackMap locals: java.util.Collection java.util.Collection java.util.ArrayList java.util.Map java.util.Map java.util.Set top java.util.Iterator
      StackMap stack:
         6: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Object
            astore 6 /* obj */
        start local 6 // java.lang.Object obj
         7: .line 144
            iconst_0
            istore 8 /* i */
        start local 8 // int i
         8: aload 6 /* obj */
            aload 3 /* mapa */
            invokestatic org.codehaus.plexus.util.CollectionUtils.getFreq:(Ljava/lang/Object;Ljava/util/Map;)I
            aload 6 /* obj */
            aload 4 /* mapb */
            invokestatic org.codehaus.plexus.util.CollectionUtils.getFreq:(Ljava/lang/Object;Ljava/util/Map;)I
            invokestatic java.lang.Math.min:(II)I
            istore 9 /* m */
        start local 9 // int m
         9: goto 12
        10: .line 146
      StackMap locals: java.util.Collection java.util.Collection java.util.ArrayList java.util.Map java.util.Map java.util.Set java.lang.Object java.util.Iterator int int
      StackMap stack:
            aload 2 /* list */
            aload 6 /* obj */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        11: .line 144
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 8 /* i */
            iload 9 /* m */
            if_icmplt 10
        end local 9 // int m
        end local 8 // int i
        end local 6 // java.lang.Object obj
        13: .line 142
      StackMap locals: java.util.Collection java.util.Collection java.util.ArrayList java.util.Map java.util.Map java.util.Set top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        14: .line 149
            aload 2 /* list */
            areturn
        end local 5 // java.util.Set elts
        end local 4 // java.util.Map mapb
        end local 3 // java.util.Map mapa
        end local 2 // java.util.ArrayList list
        end local 1 // java.util.Collection b
        end local 0 // java.util.Collection a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0     a  Ljava/util/Collection<TE;>;
            0   15     1     b  Ljava/util/Collection<TE;>;
            1   15     2  list  Ljava/util/ArrayList<TE;>;
            2   15     3  mapa  Ljava/util/Map<TE;Ljava/lang/Integer;>;
            3   15     4  mapb  Ljava/util/Map<TE;Ljava/lang/Integer;>;
            4   15     5  elts  Ljava/util/Set<TE;>;
            7   13     6   obj  TE;
            8   13     8     i  I
            9   13     9     m  I
    Signature: <E:Ljava/lang/Object;>(Ljava/util/Collection<TE;>;Ljava/util/Collection<TE;>;)Ljava/util/Collection<TE;>;
    MethodParameters:
      Name  Flags
      a     final
      b     final

  public static <T> java.util.Collection<T> subtract(java.util.Collection<T>, java.util.Collection<T>);
    descriptor: (Ljava/util/Collection;Ljava/util/Collection;)Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.util.Collection a
        start local 1 // java.util.Collection b
         0: .line 164
            new java.util.ArrayList
            dup
            aload 0 /* a */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 2 /* list */
        start local 2 // java.util.ArrayList list
         1: .line 165
            aload 1 /* b */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: java.util.Collection java.util.Collection java.util.ArrayList top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Object
            astore 3 /* aB */
        start local 3 // java.lang.Object aB
         3: .line 167
            aload 2 /* list */
            aload 3 /* aB */
            invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.lang.Object aB
         4: .line 165
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 169
            aload 2 /* list */
            areturn
        end local 2 // java.util.ArrayList list
        end local 1 // java.util.Collection b
        end local 0 // java.util.Collection a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0     a  Ljava/util/Collection<TT;>;
            0    6     1     b  Ljava/util/Collection<TT;>;
            1    6     2  list  Ljava/util/ArrayList<TT;>;
            3    4     3    aB  TT;
    Signature: <T:Ljava/lang/Object;>(Ljava/util/Collection<TT;>;Ljava/util/Collection<TT;>;)Ljava/util/Collection<TT;>;
    MethodParameters:
      Name  Flags
      a     final
      b     final

  public static <E> java.util.Map<E, java.lang.Integer> getCardinalityMap(java.util.Collection<E>);
    descriptor: (Ljava/util/Collection;)Ljava/util/Map;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // java.util.Collection col
         0: .line 182
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 1 /* count */
        start local 1 // java.util.HashMap count
         1: .line 183
            aload 0 /* col */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 8
      StackMap locals: java.util.Collection java.util.HashMap top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Object
            astore 2 /* obj */
        start local 2 // java.lang.Object obj
         3: .line 185
            aload 1 /* count */
            aload 2 /* obj */
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 4 /* c */
        start local 4 // java.lang.Integer c
         4: .line 186
            aload 4 /* c */
            ifnonnull 7
         5: .line 188
            aload 1 /* count */
            aload 2 /* obj */
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 189
            goto 8
         7: .line 192
      StackMap locals: java.util.Collection java.util.HashMap java.lang.Object java.util.Iterator java.lang.Integer
      StackMap stack:
            aload 1 /* count */
            aload 2 /* obj */
            aload 4 /* c */
            invokevirtual java.lang.Integer.intValue:()I
            iconst_1
            iadd
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // java.lang.Integer c
        end local 2 // java.lang.Object obj
         8: .line 183
      StackMap locals: java.util.Collection java.util.HashMap top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         9: .line 195
            aload 1 /* count */
            areturn
        end local 1 // java.util.HashMap count
        end local 0 // java.util.Collection col
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0    col  Ljava/util/Collection<TE;>;
            1   10     1  count  Ljava/util/HashMap<TE;Ljava/lang/Integer;>;
            3    8     2    obj  TE;
            4    8     4      c  Ljava/lang/Integer;
    Signature: <E:Ljava/lang/Object;>(Ljava/util/Collection<TE;>;)Ljava/util/Map<TE;Ljava/lang/Integer;>;
    MethodParameters:
      Name  Flags
      col   final

  public static <E> java.util.List<E> iteratorToList(java.util.Iterator<E>);
    descriptor: (Ljava/util/Iterator;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.util.Iterator it
         0: .line 200
            aload 0 /* it */
            ifnonnull 2
         1: .line 202
            new java.lang.NullPointerException
            dup
            ldc "it cannot be null."
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 205
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* list */
        start local 1 // java.util.List list
         3: .line 207
            goto 5
         4: .line 209
      StackMap locals: java.util.List
      StackMap stack:
            aload 1 /* list */
            aload 0 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 207
      StackMap locals:
      StackMap stack:
            aload 0 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         6: .line 212
            aload 1 /* list */
            areturn
        end local 1 // java.util.List list
        end local 0 // java.util.Iterator it
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0    it  Ljava/util/Iterator<TE;>;
            3    7     1  list  Ljava/util/List<TE;>;
    Signature: <E:Ljava/lang/Object;>(Ljava/util/Iterator<TE;>;)Ljava/util/List<TE;>;
    MethodParameters:
      Name  Flags
      it    

  private static <E> int getFreq(E, java.util.Map<E, java.lang.Integer>);
    descriptor: (Ljava/lang/Object;Ljava/util/Map;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.Object obj
        start local 1 // java.util.Map freqMap
         0: .line 223
            aload 1 /* freqMap */
            aload 0 /* obj */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 2 /* o */
        start local 2 // java.lang.Integer o
         1: .line 224
            aload 2 /* o */
            ifnull 6
         2: .line 226
            aload 2 /* o */
            invokevirtual java.lang.Integer.intValue:()I
         3: ireturn
        end local 2 // java.lang.Integer o
         4: .line 229
      StackMap locals:
      StackMap stack: java.lang.NullPointerException
            pop
            goto 6
         5: .line 232
      StackMap locals:
      StackMap stack: java.util.NoSuchElementException
            pop
         6: .line 235
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.util.Map freqMap
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0      obj  TE;
            0    7     1  freqMap  Ljava/util/Map<TE;Ljava/lang/Integer;>;
            1    4     2        o  Ljava/lang/Integer;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.NullPointerException
           0     3       5  Class java.util.NoSuchElementException
    Signature: <E:Ljava/lang/Object;>(TE;Ljava/util/Map<TE;Ljava/lang/Integer;>;)I
    MethodParameters:
         Name  Flags
      obj      final
      freqMap  final
}
SourceFile: "CollectionUtils.java"