public class javax.lang.model.util.ElementFilter
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: javax.lang.model.util.ElementFilter
  super_class: java.lang.Object
{
  private static final java.util.Set<javax.lang.model.element.ElementKind> CONSTRUCTOR_KIND;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljavax/lang/model/element/ElementKind;>;

  private static final java.util.Set<javax.lang.model.element.ElementKind> FIELD_KINDS;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljavax/lang/model/element/ElementKind;>;

  private static final java.util.Set<javax.lang.model.element.ElementKind> METHOD_KIND;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljavax/lang/model/element/ElementKind;>;

  private static final java.util.Set<javax.lang.model.element.ElementKind> PACKAGE_KIND;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljavax/lang/model/element/ElementKind;>;

  private static final java.util.Set<javax.lang.model.element.ElementKind> MODULE_KIND;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljavax/lang/model/element/ElementKind;>;

  private static final java.util.Set<javax.lang.model.element.ElementKind> TYPE_KINDS;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljavax/lang/model/element/ElementKind;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 68
            getstatic javax.lang.model.element.ElementKind.CONSTRUCTOR:Ljavax/lang/model/element/ElementKind;
            invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
         1: .line 67
            putstatic javax.lang.model.util.ElementFilter.CONSTRUCTOR_KIND:Ljava/util/Set;
         2: .line 71
            getstatic javax.lang.model.element.ElementKind.FIELD:Ljavax/lang/model/element/ElementKind;
         3: .line 72
            getstatic javax.lang.model.element.ElementKind.ENUM_CONSTANT:Ljavax/lang/model/element/ElementKind;
         4: .line 71
            invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
         5: .line 70
            putstatic javax.lang.model.util.ElementFilter.FIELD_KINDS:Ljava/util/Set;
         6: .line 74
            getstatic javax.lang.model.element.ElementKind.METHOD:Ljavax/lang/model/element/ElementKind;
            invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
         7: .line 73
            putstatic javax.lang.model.util.ElementFilter.METHOD_KIND:Ljava/util/Set;
         8: .line 77
            getstatic javax.lang.model.element.ElementKind.PACKAGE:Ljavax/lang/model/element/ElementKind;
            invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
         9: .line 76
            putstatic javax.lang.model.util.ElementFilter.PACKAGE_KIND:Ljava/util/Set;
        10: .line 80
            getstatic javax.lang.model.element.ElementKind.MODULE:Ljavax/lang/model/element/ElementKind;
            invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
        11: .line 79
            putstatic javax.lang.model.util.ElementFilter.MODULE_KIND:Ljava/util/Set;
        12: .line 83
            getstatic javax.lang.model.element.ElementKind.CLASS:Ljavax/lang/model/element/ElementKind;
        13: .line 84
            getstatic javax.lang.model.element.ElementKind.ENUM:Ljavax/lang/model/element/ElementKind;
        14: .line 85
            getstatic javax.lang.model.element.ElementKind.INTERFACE:Ljavax/lang/model/element/ElementKind;
        15: .line 86
            getstatic javax.lang.model.element.ElementKind.ANNOTATION_TYPE:Ljavax/lang/model/element/ElementKind;
        16: .line 83
            invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
        17: .line 82
            putstatic javax.lang.model.util.ElementFilter.TYPE_KINDS:Ljava/util/Set;
        18: .line 86
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.lang.model.util.ElementFilter this
         0: .line 65
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // javax.lang.model.util.ElementFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/lang/model/util/ElementFilter;

  public static java.util.List<javax.lang.model.element.VariableElement> fieldsIn(java.lang.Iterable<? extends javax.lang.model.element.Element>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable elements
         0: .line 94
            aload 0 /* elements */
            getstatic javax.lang.model.util.ElementFilter.FIELD_KINDS:Ljava/util/Set;
            ldc Ljavax/lang/model/element/VariableElement;
            invokestatic javax.lang.model.util.ElementFilter.listFilter:(Ljava/lang/Iterable;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Iterable elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;
    Signature: (Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;)Ljava/util/List<Ljavax/lang/model/element/VariableElement;>;
    MethodParameters:
          Name  Flags
      elements  

  public static java.util.Set<javax.lang.model.element.VariableElement> fieldsIn(java.util.Set<? extends javax.lang.model.element.Element>);
    descriptor: (Ljava/util/Set;)Ljava/util/Set;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.Set elements
         0: .line 104
            aload 0 /* elements */
            getstatic javax.lang.model.util.ElementFilter.FIELD_KINDS:Ljava/util/Set;
            ldc Ljavax/lang/model/element/VariableElement;
            invokestatic javax.lang.model.util.ElementFilter.setFilter:(Ljava/util/Set;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/Set;
            areturn
        end local 0 // java.util.Set elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  Ljava/util/Set<+Ljavax/lang/model/element/Element;>;
    Signature: (Ljava/util/Set<+Ljavax/lang/model/element/Element;>;)Ljava/util/Set<Ljavax/lang/model/element/VariableElement;>;
    MethodParameters:
          Name  Flags
      elements  

  public static java.util.List<javax.lang.model.element.ExecutableElement> constructorsIn(java.lang.Iterable<? extends javax.lang.model.element.Element>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable elements
         0: .line 114
            aload 0 /* elements */
            getstatic javax.lang.model.util.ElementFilter.CONSTRUCTOR_KIND:Ljava/util/Set;
            ldc Ljavax/lang/model/element/ExecutableElement;
            invokestatic javax.lang.model.util.ElementFilter.listFilter:(Ljava/lang/Iterable;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Iterable elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;
    Signature: (Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;)Ljava/util/List<Ljavax/lang/model/element/ExecutableElement;>;
    MethodParameters:
          Name  Flags
      elements  

  public static java.util.Set<javax.lang.model.element.ExecutableElement> constructorsIn(java.util.Set<? extends javax.lang.model.element.Element>);
    descriptor: (Ljava/util/Set;)Ljava/util/Set;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.Set elements
         0: .line 124
            aload 0 /* elements */
            getstatic javax.lang.model.util.ElementFilter.CONSTRUCTOR_KIND:Ljava/util/Set;
            ldc Ljavax/lang/model/element/ExecutableElement;
            invokestatic javax.lang.model.util.ElementFilter.setFilter:(Ljava/util/Set;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/Set;
            areturn
        end local 0 // java.util.Set elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  Ljava/util/Set<+Ljavax/lang/model/element/Element;>;
    Signature: (Ljava/util/Set<+Ljavax/lang/model/element/Element;>;)Ljava/util/Set<Ljavax/lang/model/element/ExecutableElement;>;
    MethodParameters:
          Name  Flags
      elements  

  public static java.util.List<javax.lang.model.element.ExecutableElement> methodsIn(java.lang.Iterable<? extends javax.lang.model.element.Element>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable elements
         0: .line 134
            aload 0 /* elements */
            getstatic javax.lang.model.util.ElementFilter.METHOD_KIND:Ljava/util/Set;
            ldc Ljavax/lang/model/element/ExecutableElement;
            invokestatic javax.lang.model.util.ElementFilter.listFilter:(Ljava/lang/Iterable;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Iterable elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;
    Signature: (Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;)Ljava/util/List<Ljavax/lang/model/element/ExecutableElement;>;
    MethodParameters:
          Name  Flags
      elements  

  public static java.util.Set<javax.lang.model.element.ExecutableElement> methodsIn(java.util.Set<? extends javax.lang.model.element.Element>);
    descriptor: (Ljava/util/Set;)Ljava/util/Set;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.Set elements
         0: .line 144
            aload 0 /* elements */
            getstatic javax.lang.model.util.ElementFilter.METHOD_KIND:Ljava/util/Set;
            ldc Ljavax/lang/model/element/ExecutableElement;
            invokestatic javax.lang.model.util.ElementFilter.setFilter:(Ljava/util/Set;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/Set;
            areturn
        end local 0 // java.util.Set elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  Ljava/util/Set<+Ljavax/lang/model/element/Element;>;
    Signature: (Ljava/util/Set<+Ljavax/lang/model/element/Element;>;)Ljava/util/Set<Ljavax/lang/model/element/ExecutableElement;>;
    MethodParameters:
          Name  Flags
      elements  

  public static java.util.List<javax.lang.model.element.TypeElement> typesIn(java.lang.Iterable<? extends javax.lang.model.element.Element>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable elements
         0: .line 154
            aload 0 /* elements */
            getstatic javax.lang.model.util.ElementFilter.TYPE_KINDS:Ljava/util/Set;
            ldc Ljavax/lang/model/element/TypeElement;
            invokestatic javax.lang.model.util.ElementFilter.listFilter:(Ljava/lang/Iterable;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Iterable elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;
    Signature: (Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;)Ljava/util/List<Ljavax/lang/model/element/TypeElement;>;
    MethodParameters:
          Name  Flags
      elements  

  public static java.util.Set<javax.lang.model.element.TypeElement> typesIn(java.util.Set<? extends javax.lang.model.element.Element>);
    descriptor: (Ljava/util/Set;)Ljava/util/Set;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.Set elements
         0: .line 164
            aload 0 /* elements */
            getstatic javax.lang.model.util.ElementFilter.TYPE_KINDS:Ljava/util/Set;
            ldc Ljavax/lang/model/element/TypeElement;
            invokestatic javax.lang.model.util.ElementFilter.setFilter:(Ljava/util/Set;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/Set;
            areturn
        end local 0 // java.util.Set elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  Ljava/util/Set<+Ljavax/lang/model/element/Element;>;
    Signature: (Ljava/util/Set<+Ljavax/lang/model/element/Element;>;)Ljava/util/Set<Ljavax/lang/model/element/TypeElement;>;
    MethodParameters:
          Name  Flags
      elements  

  public static java.util.List<javax.lang.model.element.PackageElement> packagesIn(java.lang.Iterable<? extends javax.lang.model.element.Element>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable elements
         0: .line 174
            aload 0 /* elements */
            getstatic javax.lang.model.util.ElementFilter.PACKAGE_KIND:Ljava/util/Set;
            ldc Ljavax/lang/model/element/PackageElement;
            invokestatic javax.lang.model.util.ElementFilter.listFilter:(Ljava/lang/Iterable;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Iterable elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;
    Signature: (Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;)Ljava/util/List<Ljavax/lang/model/element/PackageElement;>;
    MethodParameters:
          Name  Flags
      elements  

  public static java.util.Set<javax.lang.model.element.PackageElement> packagesIn(java.util.Set<? extends javax.lang.model.element.Element>);
    descriptor: (Ljava/util/Set;)Ljava/util/Set;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.Set elements
         0: .line 184
            aload 0 /* elements */
            getstatic javax.lang.model.util.ElementFilter.PACKAGE_KIND:Ljava/util/Set;
            ldc Ljavax/lang/model/element/PackageElement;
            invokestatic javax.lang.model.util.ElementFilter.setFilter:(Ljava/util/Set;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/Set;
            areturn
        end local 0 // java.util.Set elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  Ljava/util/Set<+Ljavax/lang/model/element/Element;>;
    Signature: (Ljava/util/Set<+Ljavax/lang/model/element/Element;>;)Ljava/util/Set<Ljavax/lang/model/element/PackageElement;>;
    MethodParameters:
          Name  Flags
      elements  

  public static java.util.List<javax.lang.model.element.ModuleElement> modulesIn(java.lang.Iterable<? extends javax.lang.model.element.Element>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable elements
         0: .line 196
            aload 0 /* elements */
            getstatic javax.lang.model.util.ElementFilter.MODULE_KIND:Ljava/util/Set;
            ldc Ljavax/lang/model/element/ModuleElement;
            invokestatic javax.lang.model.util.ElementFilter.listFilter:(Ljava/lang/Iterable;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Iterable elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;
    Signature: (Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;)Ljava/util/List<Ljavax/lang/model/element/ModuleElement;>;
    MethodParameters:
          Name  Flags
      elements  

  public static java.util.Set<javax.lang.model.element.ModuleElement> modulesIn(java.util.Set<? extends javax.lang.model.element.Element>);
    descriptor: (Ljava/util/Set;)Ljava/util/Set;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.Set elements
         0: .line 208
            aload 0 /* elements */
            getstatic javax.lang.model.util.ElementFilter.MODULE_KIND:Ljava/util/Set;
            ldc Ljavax/lang/model/element/ModuleElement;
            invokestatic javax.lang.model.util.ElementFilter.setFilter:(Ljava/util/Set;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/Set;
            areturn
        end local 0 // java.util.Set elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  Ljava/util/Set<+Ljavax/lang/model/element/Element;>;
    Signature: (Ljava/util/Set<+Ljavax/lang/model/element/Element;>;)Ljava/util/Set<Ljavax/lang/model/element/ModuleElement;>;
    MethodParameters:
          Name  Flags
      elements  

  private static <E extends javax.lang.model.element.Element> java.util.List<E> listFilter(java.lang.Iterable<? extends javax.lang.model.element.Element>, java.util.Set<javax.lang.model.element.ElementKind>, java.lang.Class<E>);
    descriptor: (Ljava/lang/Iterable;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // java.lang.Iterable elements
        start local 1 // java.util.Set targetKinds
        start local 2 // java.lang.Class clazz
         0: .line 215
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* list */
        start local 3 // java.util.List list
         1: .line 216
            aload 0 /* elements */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 5
      StackMap locals: java.lang.Iterable java.util.Set java.lang.Class java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.Element
            astore 4 /* e */
        start local 4 // javax.lang.model.element.Element e
         3: .line 217
            aload 1 /* targetKinds */
            aload 4 /* e */
            invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 218
            aload 3 /* list */
            aload 2 /* clazz */
            aload 4 /* e */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.lang.model.element.Element
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // javax.lang.model.element.Element e
         5: .line 216
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 220
            aload 3 /* list */
            areturn
        end local 3 // java.util.List list
        end local 2 // java.lang.Class clazz
        end local 1 // java.util.Set targetKinds
        end local 0 // java.lang.Iterable elements
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0     elements  Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;
            0    7     1  targetKinds  Ljava/util/Set<Ljavax/lang/model/element/ElementKind;>;
            0    7     2        clazz  Ljava/lang/Class<TE;>;
            1    7     3         list  Ljava/util/List<TE;>;
            3    5     4            e  Ljavax/lang/model/element/Element;
    Signature: <E::Ljavax/lang/model/element/Element;>(Ljava/lang/Iterable<+Ljavax/lang/model/element/Element;>;Ljava/util/Set<Ljavax/lang/model/element/ElementKind;>;Ljava/lang/Class<TE;>;)Ljava/util/List<TE;>;
    MethodParameters:
             Name  Flags
      elements     
      targetKinds  
      clazz        

  private static <E extends javax.lang.model.element.Element> java.util.Set<E> setFilter(java.util.Set<? extends javax.lang.model.element.Element>, java.util.Set<javax.lang.model.element.ElementKind>, java.lang.Class<E>);
    descriptor: (Ljava/util/Set;Ljava/util/Set;Ljava/lang/Class;)Ljava/util/Set;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // java.util.Set elements
        start local 1 // java.util.Set targetKinds
        start local 2 // java.lang.Class clazz
         0: .line 228
            new java.util.LinkedHashSet
            dup
            invokespecial java.util.LinkedHashSet.<init>:()V
            astore 3 /* set */
        start local 3 // java.util.Set set
         1: .line 229
            aload 0 /* elements */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 5
            goto 5
      StackMap locals: java.util.Set java.util.Set java.lang.Class java.util.Set top java.util.Iterator
      StackMap stack:
         2: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.Element
            astore 4 /* e */
        start local 4 // javax.lang.model.element.Element e
         3: .line 230
            aload 1 /* targetKinds */
            aload 4 /* e */
            invokeinterface javax.lang.model.element.Element.getKind:()Ljavax/lang/model/element/ElementKind;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 231
            aload 3 /* set */
            aload 2 /* clazz */
            aload 4 /* e */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.lang.model.element.Element
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // javax.lang.model.element.Element e
         5: .line 229
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 233
            aload 3 /* set */
            areturn
        end local 3 // java.util.Set set
        end local 2 // java.lang.Class clazz
        end local 1 // java.util.Set targetKinds
        end local 0 // java.util.Set elements
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0     elements  Ljava/util/Set<+Ljavax/lang/model/element/Element;>;
            0    7     1  targetKinds  Ljava/util/Set<Ljavax/lang/model/element/ElementKind;>;
            0    7     2        clazz  Ljava/lang/Class<TE;>;
            1    7     3          set  Ljava/util/Set<TE;>;
            3    5     4            e  Ljavax/lang/model/element/Element;
    Signature: <E::Ljavax/lang/model/element/Element;>(Ljava/util/Set<+Ljavax/lang/model/element/Element;>;Ljava/util/Set<Ljavax/lang/model/element/ElementKind;>;Ljava/lang/Class<TE;>;)Ljava/util/Set<TE;>;
    MethodParameters:
             Name  Flags
      elements     
      targetKinds  
      clazz        

  public static java.util.List<javax.lang.model.element.ModuleElement$ExportsDirective> exportsIn(java.lang.Iterable<? extends javax.lang.model.element.ModuleElement$Directive>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable directives
         0: .line 245
            aload 0 /* directives */
            getstatic javax.lang.model.element.ModuleElement$DirectiveKind.EXPORTS:Ljavax/lang/model/element/ModuleElement$DirectiveKind;
            ldc Ljavax/lang/model/element/ModuleElement$ExportsDirective;
            invokestatic javax.lang.model.util.ElementFilter.listFilter:(Ljava/lang/Iterable;Ljavax/lang/model/element/ModuleElement$DirectiveKind;Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Iterable directives
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  directives  Ljava/lang/Iterable<+Ljavax/lang/model/element/ModuleElement$Directive;>;
    Signature: (Ljava/lang/Iterable<+Ljavax/lang/model/element/ModuleElement$Directive;>;)Ljava/util/List<Ljavax/lang/model/element/ModuleElement$ExportsDirective;>;
    MethodParameters:
            Name  Flags
      directives  

  public static java.util.List<javax.lang.model.element.ModuleElement$OpensDirective> opensIn(java.lang.Iterable<? extends javax.lang.model.element.ModuleElement$Directive>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable directives
         0: .line 256
            aload 0 /* directives */
            getstatic javax.lang.model.element.ModuleElement$DirectiveKind.OPENS:Ljavax/lang/model/element/ModuleElement$DirectiveKind;
            ldc Ljavax/lang/model/element/ModuleElement$OpensDirective;
            invokestatic javax.lang.model.util.ElementFilter.listFilter:(Ljava/lang/Iterable;Ljavax/lang/model/element/ModuleElement$DirectiveKind;Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Iterable directives
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  directives  Ljava/lang/Iterable<+Ljavax/lang/model/element/ModuleElement$Directive;>;
    Signature: (Ljava/lang/Iterable<+Ljavax/lang/model/element/ModuleElement$Directive;>;)Ljava/util/List<Ljavax/lang/model/element/ModuleElement$OpensDirective;>;
    MethodParameters:
            Name  Flags
      directives  

  public static java.util.List<javax.lang.model.element.ModuleElement$ProvidesDirective> providesIn(java.lang.Iterable<? extends javax.lang.model.element.ModuleElement$Directive>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable directives
         0: .line 268
            aload 0 /* directives */
            getstatic javax.lang.model.element.ModuleElement$DirectiveKind.PROVIDES:Ljavax/lang/model/element/ModuleElement$DirectiveKind;
            ldc Ljavax/lang/model/element/ModuleElement$ProvidesDirective;
            invokestatic javax.lang.model.util.ElementFilter.listFilter:(Ljava/lang/Iterable;Ljavax/lang/model/element/ModuleElement$DirectiveKind;Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Iterable directives
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  directives  Ljava/lang/Iterable<+Ljavax/lang/model/element/ModuleElement$Directive;>;
    Signature: (Ljava/lang/Iterable<+Ljavax/lang/model/element/ModuleElement$Directive;>;)Ljava/util/List<Ljavax/lang/model/element/ModuleElement$ProvidesDirective;>;
    MethodParameters:
            Name  Flags
      directives  

  public static java.util.List<javax.lang.model.element.ModuleElement$RequiresDirective> requiresIn(java.lang.Iterable<? extends javax.lang.model.element.ModuleElement$Directive>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable directives
         0: .line 280
            aload 0 /* directives */
            getstatic javax.lang.model.element.ModuleElement$DirectiveKind.REQUIRES:Ljavax/lang/model/element/ModuleElement$DirectiveKind;
            ldc Ljavax/lang/model/element/ModuleElement$RequiresDirective;
            invokestatic javax.lang.model.util.ElementFilter.listFilter:(Ljava/lang/Iterable;Ljavax/lang/model/element/ModuleElement$DirectiveKind;Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Iterable directives
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  directives  Ljava/lang/Iterable<+Ljavax/lang/model/element/ModuleElement$Directive;>;
    Signature: (Ljava/lang/Iterable<+Ljavax/lang/model/element/ModuleElement$Directive;>;)Ljava/util/List<Ljavax/lang/model/element/ModuleElement$RequiresDirective;>;
    MethodParameters:
            Name  Flags
      directives  

  public static java.util.List<javax.lang.model.element.ModuleElement$UsesDirective> usesIn(java.lang.Iterable<? extends javax.lang.model.element.ModuleElement$Directive>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable directives
         0: .line 292
            aload 0 /* directives */
            getstatic javax.lang.model.element.ModuleElement$DirectiveKind.USES:Ljavax/lang/model/element/ModuleElement$DirectiveKind;
            ldc Ljavax/lang/model/element/ModuleElement$UsesDirective;
            invokestatic javax.lang.model.util.ElementFilter.listFilter:(Ljava/lang/Iterable;Ljavax/lang/model/element/ModuleElement$DirectiveKind;Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Iterable directives
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  directives  Ljava/lang/Iterable<+Ljavax/lang/model/element/ModuleElement$Directive;>;
    Signature: (Ljava/lang/Iterable<+Ljavax/lang/model/element/ModuleElement$Directive;>;)Ljava/util/List<Ljavax/lang/model/element/ModuleElement$UsesDirective;>;
    MethodParameters:
            Name  Flags
      directives  

  private static <D extends javax.lang.model.element.ModuleElement$Directive> java.util.List<D> listFilter(java.lang.Iterable<? extends javax.lang.model.element.ModuleElement$Directive>, javax.lang.model.element.ModuleElement$DirectiveKind, java.lang.Class<D>);
    descriptor: (Ljava/lang/Iterable;Ljavax/lang/model/element/ModuleElement$DirectiveKind;Ljava/lang/Class;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // java.lang.Iterable directives
        start local 1 // javax.lang.model.element.ModuleElement$DirectiveKind directiveKind
        start local 2 // java.lang.Class clazz
         0: .line 299
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* list */
        start local 3 // java.util.List list
         1: .line 300
            aload 0 /* directives */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 5
      StackMap locals: java.lang.Iterable javax.lang.model.element.ModuleElement$DirectiveKind java.lang.Class java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.ModuleElement$Directive
            astore 4 /* d */
        start local 4 // javax.lang.model.element.ModuleElement$Directive d
         3: .line 301
            aload 4 /* d */
            invokeinterface javax.lang.model.element.ModuleElement$Directive.getKind:()Ljavax/lang/model/element/ModuleElement$DirectiveKind;
            aload 1 /* directiveKind */
            if_acmpne 5
         4: .line 302
            aload 3 /* list */
            aload 2 /* clazz */
            aload 4 /* d */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.lang.model.element.ModuleElement$Directive
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // javax.lang.model.element.ModuleElement$Directive d
         5: .line 300
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 304
            aload 3 /* list */
            areturn
        end local 3 // java.util.List list
        end local 2 // java.lang.Class clazz
        end local 1 // javax.lang.model.element.ModuleElement$DirectiveKind directiveKind
        end local 0 // java.lang.Iterable directives
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0     directives  Ljava/lang/Iterable<+Ljavax/lang/model/element/ModuleElement$Directive;>;
            0    7     1  directiveKind  Ljavax/lang/model/element/ModuleElement$DirectiveKind;
            0    7     2          clazz  Ljava/lang/Class<TD;>;
            1    7     3           list  Ljava/util/List<TD;>;
            3    5     4              d  Ljavax/lang/model/element/ModuleElement$Directive;
    Signature: <D::Ljavax/lang/model/element/ModuleElement$Directive;>(Ljava/lang/Iterable<+Ljavax/lang/model/element/ModuleElement$Directive;>;Ljavax/lang/model/element/ModuleElement$DirectiveKind;Ljava/lang/Class<TD;>;)Ljava/util/List<TD;>;
    MethodParameters:
               Name  Flags
      directives     
      directiveKind  
      clazz          
}
SourceFile: "ElementFilter.java"
InnerClasses:
  public abstract Directive = javax.lang.model.element.ModuleElement$Directive of javax.lang.model.element.ModuleElement
  public final DirectiveKind = javax.lang.model.element.ModuleElement$DirectiveKind of javax.lang.model.element.ModuleElement
  public abstract ExportsDirective = javax.lang.model.element.ModuleElement$ExportsDirective of javax.lang.model.element.ModuleElement
  public abstract OpensDirective = javax.lang.model.element.ModuleElement$OpensDirective of javax.lang.model.element.ModuleElement
  public abstract ProvidesDirective = javax.lang.model.element.ModuleElement$ProvidesDirective of javax.lang.model.element.ModuleElement
  public abstract RequiresDirective = javax.lang.model.element.ModuleElement$RequiresDirective of javax.lang.model.element.ModuleElement
  public abstract UsesDirective = javax.lang.model.element.ModuleElement$UsesDirective of javax.lang.model.element.ModuleElement