public abstract class org.hibernate.criterion.AbstractEmptinessExpression implements org.hibernate.criterion.Criterion
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.hibernate.criterion.AbstractEmptinessExpression
  super_class: java.lang.Object
{
  private static final org.hibernate.engine.spi.TypedValue[] NO_VALUES;
    descriptor: [Lorg/hibernate/engine/spi/TypedValue;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected final java.lang.String propertyName;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 28
            iconst_0
            anewarray org.hibernate.engine.spi.TypedValue
            putstatic org.hibernate.criterion.AbstractEmptinessExpression.NO_VALUES:[Lorg/hibernate/engine/spi/TypedValue;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.hibernate.criterion.AbstractEmptinessExpression this
        start local 1 // java.lang.String propertyName
         0: .line 32
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 33
            aload 0 /* this */
            aload 1 /* propertyName */
            putfield org.hibernate.criterion.AbstractEmptinessExpression.propertyName:Ljava/lang/String;
         2: .line 34
            return
        end local 1 // java.lang.String propertyName
        end local 0 // org.hibernate.criterion.AbstractEmptinessExpression this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lorg/hibernate/criterion/AbstractEmptinessExpression;
            0    3     1  propertyName  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      propertyName  

  protected abstract boolean excludeEmpty();
    descriptor: ()Z
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public final java.lang.String toSqlString(org.hibernate.Criteria, org.hibernate.criterion.CriteriaQuery);
    descriptor: (Lorg/hibernate/Criteria;Lorg/hibernate/criterion/CriteriaQuery;)Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=11, args_size=3
        start local 0 // org.hibernate.criterion.AbstractEmptinessExpression this
        start local 1 // org.hibernate.Criteria criteria
        start local 2 // org.hibernate.criterion.CriteriaQuery criteriaQuery
         0: .line 45
            aload 2 /* criteriaQuery */
            aload 1 /* criteria */
            aload 0 /* this */
            getfield org.hibernate.criterion.AbstractEmptinessExpression.propertyName:Ljava/lang/String;
            invokeinterface org.hibernate.criterion.CriteriaQuery.getEntityName:(Lorg/hibernate/Criteria;Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* entityName */
        start local 3 // java.lang.String entityName
         1: .line 46
            aload 2 /* criteriaQuery */
            aload 0 /* this */
            getfield org.hibernate.criterion.AbstractEmptinessExpression.propertyName:Ljava/lang/String;
            invokeinterface org.hibernate.criterion.CriteriaQuery.getPropertyName:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* actualPropertyName */
        start local 4 // java.lang.String actualPropertyName
         2: .line 47
            aload 2 /* criteriaQuery */
            aload 1 /* criteria */
            aload 0 /* this */
            getfield org.hibernate.criterion.AbstractEmptinessExpression.propertyName:Ljava/lang/String;
            invokeinterface org.hibernate.criterion.CriteriaQuery.getSQLAlias:(Lorg/hibernate/Criteria;Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* sqlAlias */
        start local 5 // java.lang.String sqlAlias
         3: .line 49
            aload 2 /* criteriaQuery */
            invokeinterface org.hibernate.criterion.CriteriaQuery.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            astore 6 /* factory */
        start local 6 // org.hibernate.engine.spi.SessionFactoryImplementor factory
         4: .line 50
            aload 0 /* this */
            aload 3 /* entityName */
            aload 4 /* actualPropertyName */
            aload 6 /* factory */
            invokevirtual org.hibernate.criterion.AbstractEmptinessExpression.getQueryableCollection:(Ljava/lang/String;Ljava/lang/String;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Lorg/hibernate/persister/collection/QueryableCollection;
            astore 7 /* collectionPersister */
        start local 7 // org.hibernate.persister.collection.QueryableCollection collectionPersister
         5: .line 52
            aload 7 /* collectionPersister */
            invokeinterface org.hibernate.persister.collection.QueryableCollection.getKeyColumnNames:()[Ljava/lang/String;
            astore 8 /* collectionKeys */
        start local 8 // java.lang.String[] collectionKeys
         6: .line 53
            aload 6 /* factory */
            aload 3 /* entityName */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getEntityPersister:(Ljava/lang/String;)Lorg/hibernate/persister/entity/EntityPersister;
            checkcast org.hibernate.persister.entity.Loadable
            invokeinterface org.hibernate.persister.entity.Loadable.getIdentifierColumnNames:()[Ljava/lang/String;
            astore 9 /* ownerKeys */
        start local 9 // java.lang.String[] ownerKeys
         7: .line 55
            new java.lang.StringBuilder
            dup
            ldc "(select 1 from "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 7 /* collectionPersister */
            invokeinterface org.hibernate.persister.collection.QueryableCollection.getTableName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " where "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 56
            new org.hibernate.sql.ConditionFragment
            dup
            invokespecial org.hibernate.sql.ConditionFragment.<init>:()V
            aload 5 /* sqlAlias */
            invokevirtual org.hibernate.sql.ConditionFragment.setTableAlias:(Ljava/lang/String;)Lorg/hibernate/sql/ConditionFragment;
            aload 9 /* ownerKeys */
            aload 8 /* collectionKeys */
            invokevirtual org.hibernate.sql.ConditionFragment.setCondition:([Ljava/lang/String;[Ljava/lang/String;)Lorg/hibernate/sql/ConditionFragment;
            invokevirtual org.hibernate.sql.ConditionFragment.toFragmentString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         9: .line 57
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        10: .line 55
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 10 /* innerSelect */
        start local 10 // java.lang.String innerSelect
        11: .line 59
            aload 0 /* this */
            invokevirtual org.hibernate.criterion.AbstractEmptinessExpression.excludeEmpty:()Z
            ifeq 13
        12: .line 60
            new java.lang.StringBuilder
            dup
            ldc "exists "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 10 /* innerSelect */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            goto 14
        13: .line 61
      StackMap locals: org.hibernate.criterion.AbstractEmptinessExpression org.hibernate.Criteria org.hibernate.criterion.CriteriaQuery java.lang.String java.lang.String java.lang.String org.hibernate.engine.spi.SessionFactoryImplementor org.hibernate.persister.collection.QueryableCollection java.lang.String[] java.lang.String[] java.lang.String
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "not exists "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 10 /* innerSelect */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 59
      StackMap locals:
      StackMap stack: java.lang.String
            areturn
        end local 10 // java.lang.String innerSelect
        end local 9 // java.lang.String[] ownerKeys
        end local 8 // java.lang.String[] collectionKeys
        end local 7 // org.hibernate.persister.collection.QueryableCollection collectionPersister
        end local 6 // org.hibernate.engine.spi.SessionFactoryImplementor factory
        end local 5 // java.lang.String sqlAlias
        end local 4 // java.lang.String actualPropertyName
        end local 3 // java.lang.String entityName
        end local 2 // org.hibernate.criterion.CriteriaQuery criteriaQuery
        end local 1 // org.hibernate.Criteria criteria
        end local 0 // org.hibernate.criterion.AbstractEmptinessExpression this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   15     0                 this  Lorg/hibernate/criterion/AbstractEmptinessExpression;
            0   15     1             criteria  Lorg/hibernate/Criteria;
            0   15     2        criteriaQuery  Lorg/hibernate/criterion/CriteriaQuery;
            1   15     3           entityName  Ljava/lang/String;
            2   15     4   actualPropertyName  Ljava/lang/String;
            3   15     5             sqlAlias  Ljava/lang/String;
            4   15     6              factory  Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            5   15     7  collectionPersister  Lorg/hibernate/persister/collection/QueryableCollection;
            6   15     8       collectionKeys  [Ljava/lang/String;
            7   15     9            ownerKeys  [Ljava/lang/String;
           11   15    10          innerSelect  Ljava/lang/String;
    Exceptions:
      throws org.hibernate.HibernateException
    MethodParameters:
               Name  Flags
      criteria       
      criteriaQuery  

  protected org.hibernate.persister.collection.QueryableCollection getQueryableCollection(java.lang.String, java.lang.String, org.hibernate.engine.spi.SessionFactoryImplementor);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Lorg/hibernate/persister/collection/QueryableCollection;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // org.hibernate.criterion.AbstractEmptinessExpression this
        start local 1 // java.lang.String entityName
        start local 2 // java.lang.String propertyName
        start local 3 // org.hibernate.engine.spi.SessionFactoryImplementor factory
         0: .line 69
            aload 3 /* factory */
            aload 1 /* entityName */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getEntityPersister:(Ljava/lang/String;)Lorg/hibernate/persister/entity/EntityPersister;
            checkcast org.hibernate.persister.entity.PropertyMapping
            astore 4 /* ownerMapping */
        start local 4 // org.hibernate.persister.entity.PropertyMapping ownerMapping
         1: .line 70
            aload 4 /* ownerMapping */
            aload 2 /* propertyName */
            invokeinterface org.hibernate.persister.entity.PropertyMapping.toType:(Ljava/lang/String;)Lorg/hibernate/type/Type;
            astore 5 /* type */
        start local 5 // org.hibernate.type.Type type
         2: .line 71
            aload 5 /* type */
            invokeinterface org.hibernate.type.Type.isCollectionType:()Z
            ifne 6
         3: .line 72
            new org.hibernate.MappingException
            dup
         4: .line 73
            new java.lang.StringBuilder
            dup
            ldc "Property path ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* entityName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* propertyName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "] does not reference a collection"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 72
            invokespecial org.hibernate.MappingException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 77
      StackMap locals: org.hibernate.persister.entity.PropertyMapping org.hibernate.type.Type
      StackMap stack:
            aload 5 /* type */
            checkcast org.hibernate.type.CollectionType
            invokevirtual org.hibernate.type.CollectionType.getRole:()Ljava/lang/String;
            astore 6 /* role */
        start local 6 // java.lang.String role
         7: .line 79
            aload 3 /* factory */
            aload 6 /* role */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getCollectionPersister:(Ljava/lang/String;)Lorg/hibernate/persister/collection/CollectionPersister;
            checkcast org.hibernate.persister.collection.QueryableCollection
         8: areturn
         9: .line 81
      StackMap locals: org.hibernate.criterion.AbstractEmptinessExpression java.lang.String java.lang.String org.hibernate.engine.spi.SessionFactoryImplementor org.hibernate.persister.entity.PropertyMapping org.hibernate.type.Type java.lang.String
      StackMap stack: java.lang.ClassCastException
            pop
        10: .line 82
            new org.hibernate.QueryException
            dup
            new java.lang.StringBuilder
            dup
            ldc "collection role is not queryable: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* role */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.hibernate.QueryException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 84
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
        12: .line 85
            new org.hibernate.QueryException
            dup
            new java.lang.StringBuilder
            dup
            ldc "collection role not found: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* role */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.hibernate.QueryException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // java.lang.String role
        end local 5 // org.hibernate.type.Type type
        end local 4 // org.hibernate.persister.entity.PropertyMapping ownerMapping
        end local 3 // org.hibernate.engine.spi.SessionFactoryImplementor factory
        end local 2 // java.lang.String propertyName
        end local 1 // java.lang.String entityName
        end local 0 // org.hibernate.criterion.AbstractEmptinessExpression this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   13     0          this  Lorg/hibernate/criterion/AbstractEmptinessExpression;
            0   13     1    entityName  Ljava/lang/String;
            0   13     2  propertyName  Ljava/lang/String;
            0   13     3       factory  Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            1   13     4  ownerMapping  Lorg/hibernate/persister/entity/PropertyMapping;
            2   13     5          type  Lorg/hibernate/type/Type;
            7   13     6          role  Ljava/lang/String;
      Exception table:
        from    to  target  type
           7     8       9  Class java.lang.ClassCastException
           7     8      11  Class java.lang.Exception
    Exceptions:
      throws org.hibernate.HibernateException
    MethodParameters:
              Name  Flags
      entityName    
      propertyName  
      factory       

  public final org.hibernate.engine.spi.TypedValue[] getTypedValues(org.hibernate.Criteria, org.hibernate.criterion.CriteriaQuery);
    descriptor: (Lorg/hibernate/Criteria;Lorg/hibernate/criterion/CriteriaQuery;)[Lorg/hibernate/engine/spi/TypedValue;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // org.hibernate.criterion.AbstractEmptinessExpression this
        start local 1 // org.hibernate.Criteria criteria
        start local 2 // org.hibernate.criterion.CriteriaQuery criteriaQuery
         0: .line 92
            getstatic org.hibernate.criterion.AbstractEmptinessExpression.NO_VALUES:[Lorg/hibernate/engine/spi/TypedValue;
            areturn
        end local 2 // org.hibernate.criterion.CriteriaQuery criteriaQuery
        end local 1 // org.hibernate.Criteria criteria
        end local 0 // org.hibernate.criterion.AbstractEmptinessExpression this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lorg/hibernate/criterion/AbstractEmptinessExpression;
            0    1     1       criteria  Lorg/hibernate/Criteria;
            0    1     2  criteriaQuery  Lorg/hibernate/criterion/CriteriaQuery;
    Exceptions:
      throws org.hibernate.HibernateException
    MethodParameters:
               Name  Flags
      criteria       
      criteriaQuery  

  public final java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.hibernate.criterion.AbstractEmptinessExpression this
         0: .line 97
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.hibernate.criterion.AbstractEmptinessExpression.propertyName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.hibernate.criterion.AbstractEmptinessExpression.excludeEmpty:()Z
            ifeq 1
            ldc " is not empty"
            goto 2
      StackMap locals:
      StackMap stack: java.lang.StringBuilder
         1: ldc " is empty"
      StackMap locals: org.hibernate.criterion.AbstractEmptinessExpression
      StackMap stack: java.lang.StringBuilder java.lang.String
         2: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.hibernate.criterion.AbstractEmptinessExpression this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/hibernate/criterion/AbstractEmptinessExpression;
}
SourceFile: "AbstractEmptinessExpression.java"