class org.springframework.data.projection.DefaultProjectionInformation implements org.springframework.data.projection.ProjectionInformation
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.springframework.data.projection.DefaultProjectionInformation
  super_class: java.lang.Object
{
  private final java.lang.Class<?> projectionType;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/Class<*>;

  private final java.util.List<java.beans.PropertyDescriptor> properties;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/beans/PropertyDescriptor;>;

  void <init>(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.data.projection.DefaultProjectionInformation this
        start local 1 // java.lang.Class type
         0: .line 60
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 62
            aload 1 /* type */
            ldc "Projection type must not be null!"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         2: .line 64
            aload 0 /* this */
            aload 1 /* type */
            putfield org.springframework.data.projection.DefaultProjectionInformation.projectionType:Ljava/lang/Class;
         3: .line 65
            aload 0 /* this */
            new org.springframework.data.projection.DefaultProjectionInformation$PropertyDescriptorSource
            dup
            aload 1 /* type */
            invokespecial org.springframework.data.projection.DefaultProjectionInformation$PropertyDescriptorSource.<init>:(Ljava/lang/Class;)V
            invokevirtual org.springframework.data.projection.DefaultProjectionInformation$PropertyDescriptorSource.getDescriptors:()Ljava/util/List;
            putfield org.springframework.data.projection.DefaultProjectionInformation.properties:Ljava/util/List;
         4: .line 66
            return
        end local 1 // java.lang.Class type
        end local 0 // org.springframework.data.projection.DefaultProjectionInformation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/data/projection/DefaultProjectionInformation;
            0    5     1  type  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
      Name  Flags
      type  

  public java.lang.Class<?> getType();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.projection.DefaultProjectionInformation this
         0: .line 74
            aload 0 /* this */
            getfield org.springframework.data.projection.DefaultProjectionInformation.projectionType:Ljava/lang/Class;
            areturn
        end local 0 // org.springframework.data.projection.DefaultProjectionInformation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/projection/DefaultProjectionInformation;
    Signature: ()Ljava/lang/Class<*>;

  public java.util.List<java.beans.PropertyDescriptor> getInputProperties();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.data.projection.DefaultProjectionInformation this
         0: .line 83
            aload 0 /* this */
            getfield org.springframework.data.projection.DefaultProjectionInformation.properties:Ljava/util/List;
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
         1: .line 84
            aload 0 /* this */
            invokedynamic test(Lorg/springframework/data/projection/DefaultProjectionInformation;)Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  org/springframework/data/projection/DefaultProjectionInformation.isInputProperty(Ljava/beans/PropertyDescriptor;)Z (5)
                  (Ljava/beans/PropertyDescriptor;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         2: .line 85
            invokeinterface java.util.stream.Stream.distinct:()Ljava/util/stream/Stream;
         3: .line 86
            invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.List
         4: .line 83
            areturn
        end local 0 // org.springframework.data.projection.DefaultProjectionInformation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/data/projection/DefaultProjectionInformation;
    Signature: ()Ljava/util/List<Ljava/beans/PropertyDescriptor;>;

  public boolean isClosed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.data.projection.DefaultProjectionInformation this
         0: .line 95
            aload 0 /* this */
            getfield org.springframework.data.projection.DefaultProjectionInformation.properties:Ljava/util/List;
            aload 0 /* this */
            invokevirtual org.springframework.data.projection.DefaultProjectionInformation.getInputProperties:()Ljava/util/List;
            invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 0 // org.springframework.data.projection.DefaultProjectionInformation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/projection/DefaultProjectionInformation;

  protected boolean isInputProperty(java.beans.PropertyDescriptor);
    descriptor: (Ljava/beans/PropertyDescriptor;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.springframework.data.projection.DefaultProjectionInformation this
        start local 1 // java.beans.PropertyDescriptor descriptor
         0: .line 107
            iconst_1
            ireturn
        end local 1 // java.beans.PropertyDescriptor descriptor
        end local 0 // org.springframework.data.projection.DefaultProjectionInformation this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/springframework/data/projection/DefaultProjectionInformation;
            0    1     1  descriptor  Ljava/beans/PropertyDescriptor;
    MethodParameters:
            Name  Flags
      descriptor  

  private static boolean hasDefaultGetter(java.beans.PropertyDescriptor);
    descriptor: (Ljava/beans/PropertyDescriptor;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // java.beans.PropertyDescriptor descriptor
         0: .line 118
            aload 0 /* descriptor */
            invokevirtual java.beans.PropertyDescriptor.getReadMethod:()Ljava/lang/reflect/Method;
            astore 1 /* method */
        start local 1 // java.lang.reflect.Method method
         1: .line 120
            aload 1 /* method */
            ifnull 2
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.isDefault:()Z
            ifeq 2
            iconst_1
            ireturn
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
         2: iconst_0
            ireturn
        end local 1 // java.lang.reflect.Method method
        end local 0 // java.beans.PropertyDescriptor descriptor
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0  descriptor  Ljava/beans/PropertyDescriptor;
            1    3     1      method  Ljava/lang/reflect/Method;
    MethodParameters:
            Name  Flags
      descriptor  
}
SourceFile: "DefaultProjectionInformation.java"
NestMembers:
  org.springframework.data.projection.DefaultProjectionInformation$PropertyDescriptorSource
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  private PropertyDescriptorSource = org.springframework.data.projection.DefaultProjectionInformation$PropertyDescriptorSource of org.springframework.data.projection.DefaultProjectionInformation