public final class org.jasypt.properties.EncryptableProperties extends java.util.Properties
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.jasypt.properties.EncryptableProperties
  super_class: java.util.Properties
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 6479795856725500639

  private final java.lang.Integer ident;
    descriptor: Ljava/lang/Integer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private transient org.jasypt.encryption.StringEncryptor stringEncryptor;
    descriptor: Lorg/jasypt/encryption/StringEncryptor;
    flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT

  private transient org.jasypt.util.text.TextEncryptor textEncryptor;
    descriptor: Lorg/jasypt/util/text/TextEncryptor;
    flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT

  public void <init>(org.jasypt.encryption.StringEncryptor);
    descriptor: (Lorg/jasypt/encryption/StringEncryptor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jasypt.properties.EncryptableProperties this
        start local 1 // org.jasypt.encryption.StringEncryptor stringEncryptor
         0: .line 106
            aload 0 /* this */
            aconst_null
            aload 1 /* stringEncryptor */
            invokespecial org.jasypt.properties.EncryptableProperties.<init>:(Ljava/util/Properties;Lorg/jasypt/encryption/StringEncryptor;)V
         1: .line 107
            return
        end local 1 // org.jasypt.encryption.StringEncryptor stringEncryptor
        end local 0 // org.jasypt.properties.EncryptableProperties this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lorg/jasypt/properties/EncryptableProperties;
            0    2     1  stringEncryptor  Lorg/jasypt/encryption/StringEncryptor;
    MethodParameters:
                 Name  Flags
      stringEncryptor  final

  public void <init>(org.jasypt.util.text.TextEncryptor);
    descriptor: (Lorg/jasypt/util/text/TextEncryptor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jasypt.properties.EncryptableProperties this
        start local 1 // org.jasypt.util.text.TextEncryptor textEncryptor
         0: .line 120
            aload 0 /* this */
            aconst_null
            aload 1 /* textEncryptor */
            invokespecial org.jasypt.properties.EncryptableProperties.<init>:(Ljava/util/Properties;Lorg/jasypt/util/text/TextEncryptor;)V
         1: .line 121
            return
        end local 1 // org.jasypt.util.text.TextEncryptor textEncryptor
        end local 0 // org.jasypt.properties.EncryptableProperties this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/jasypt/properties/EncryptableProperties;
            0    2     1  textEncryptor  Lorg/jasypt/util/text/TextEncryptor;
    MethodParameters:
               Name  Flags
      textEncryptor  final

  public void <init>(java.util.Properties, org.jasypt.encryption.StringEncryptor);
    descriptor: (Ljava/util/Properties;Lorg/jasypt/encryption/StringEncryptor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.jasypt.properties.EncryptableProperties this
        start local 1 // java.util.Properties defaults
        start local 2 // org.jasypt.encryption.StringEncryptor stringEncryptor
         0: .line 136
            aload 0 /* this */
            aload 1 /* defaults */
            invokespecial java.util.Properties.<init>:(Ljava/util/Properties;)V
         1: .line 81
            aload 0 /* this */
            new java.lang.Integer
            dup
            invokestatic org.jasypt.commons.CommonUtils.nextRandomInt:()I
            invokespecial java.lang.Integer.<init>:(I)V
            putfield org.jasypt.properties.EncryptableProperties.ident:Ljava/lang/Integer;
         2: .line 87
            aload 0 /* this */
            aconst_null
            putfield org.jasypt.properties.EncryptableProperties.stringEncryptor:Lorg/jasypt/encryption/StringEncryptor;
         3: .line 93
            aload 0 /* this */
            aconst_null
            putfield org.jasypt.properties.EncryptableProperties.textEncryptor:Lorg/jasypt/util/text/TextEncryptor;
         4: .line 137
            aload 2 /* stringEncryptor */
            ldc "Encryptor cannot be null"
            invokestatic org.jasypt.commons.CommonUtils.validateNotNull:(Ljava/lang/Object;Ljava/lang/String;)V
         5: .line 138
            aload 0 /* this */
            aload 2 /* stringEncryptor */
            putfield org.jasypt.properties.EncryptableProperties.stringEncryptor:Lorg/jasypt/encryption/StringEncryptor;
         6: .line 139
            aload 0 /* this */
            aconst_null
            putfield org.jasypt.properties.EncryptableProperties.textEncryptor:Lorg/jasypt/util/text/TextEncryptor;
         7: .line 140
            return
        end local 2 // org.jasypt.encryption.StringEncryptor stringEncryptor
        end local 1 // java.util.Properties defaults
        end local 0 // org.jasypt.properties.EncryptableProperties this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Lorg/jasypt/properties/EncryptableProperties;
            0    8     1         defaults  Ljava/util/Properties;
            0    8     2  stringEncryptor  Lorg/jasypt/encryption/StringEncryptor;
    MethodParameters:
                 Name  Flags
      defaults         final
      stringEncryptor  final

  public void <init>(java.util.Properties, org.jasypt.util.text.TextEncryptor);
    descriptor: (Ljava/util/Properties;Lorg/jasypt/util/text/TextEncryptor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.jasypt.properties.EncryptableProperties this
        start local 1 // java.util.Properties defaults
        start local 2 // org.jasypt.util.text.TextEncryptor textEncryptor
         0: .line 155
            aload 0 /* this */
            aload 1 /* defaults */
            invokespecial java.util.Properties.<init>:(Ljava/util/Properties;)V
         1: .line 81
            aload 0 /* this */
            new java.lang.Integer
            dup
            invokestatic org.jasypt.commons.CommonUtils.nextRandomInt:()I
            invokespecial java.lang.Integer.<init>:(I)V
            putfield org.jasypt.properties.EncryptableProperties.ident:Ljava/lang/Integer;
         2: .line 87
            aload 0 /* this */
            aconst_null
            putfield org.jasypt.properties.EncryptableProperties.stringEncryptor:Lorg/jasypt/encryption/StringEncryptor;
         3: .line 93
            aload 0 /* this */
            aconst_null
            putfield org.jasypt.properties.EncryptableProperties.textEncryptor:Lorg/jasypt/util/text/TextEncryptor;
         4: .line 156
            aload 2 /* textEncryptor */
            ldc "Encryptor cannot be null"
            invokestatic org.jasypt.commons.CommonUtils.validateNotNull:(Ljava/lang/Object;Ljava/lang/String;)V
         5: .line 157
            aload 0 /* this */
            aconst_null
            putfield org.jasypt.properties.EncryptableProperties.stringEncryptor:Lorg/jasypt/encryption/StringEncryptor;
         6: .line 158
            aload 0 /* this */
            aload 2 /* textEncryptor */
            putfield org.jasypt.properties.EncryptableProperties.textEncryptor:Lorg/jasypt/util/text/TextEncryptor;
         7: .line 159
            return
        end local 2 // org.jasypt.util.text.TextEncryptor textEncryptor
        end local 1 // java.util.Properties defaults
        end local 0 // org.jasypt.properties.EncryptableProperties this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lorg/jasypt/properties/EncryptableProperties;
            0    8     1       defaults  Ljava/util/Properties;
            0    8     2  textEncryptor  Lorg/jasypt/util/text/TextEncryptor;
    MethodParameters:
               Name  Flags
      defaults       final
      textEncryptor  final

  public java.lang.String getProperty(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jasypt.properties.EncryptableProperties this
        start local 1 // java.lang.String key
         0: .line 172
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* key */
            invokespecial java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual org.jasypt.properties.EncryptableProperties.decode:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String key
        end local 0 // org.jasypt.properties.EncryptableProperties this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jasypt/properties/EncryptableProperties;
            0    1     1   key  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      key   final

  public java.lang.String getProperty(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.jasypt.properties.EncryptableProperties this
        start local 1 // java.lang.String key
        start local 2 // java.lang.String defaultValue
         0: .line 191
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* defaultValue */
            invokespecial java.util.Properties.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual org.jasypt.properties.EncryptableProperties.decode:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 2 // java.lang.String defaultValue
        end local 1 // java.lang.String key
        end local 0 // org.jasypt.properties.EncryptableProperties this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/jasypt/properties/EncryptableProperties;
            0    1     1           key  Ljava/lang/String;
            0    1     2  defaultValue  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      key           final
      defaultValue  final

  public synchronized java.lang.Object get(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.jasypt.properties.EncryptableProperties this
        start local 1 // java.lang.Object key
         0: .line 206
            aload 0 /* this */
            aload 1 /* key */
            invokespecial java.util.Properties.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 2 /* value */
        start local 2 // java.lang.Object value
         1: .line 208
            aload 2 /* value */
            instanceof java.lang.String
            ifeq 2
            aload 2 /* value */
            checkcast java.lang.String
            goto 3
      StackMap locals: java.lang.Object
      StackMap stack:
         2: aconst_null
         3: .line 207
      StackMap locals:
      StackMap stack: java.lang.String
            astore 3 /* valueStr */
        start local 3 // java.lang.String valueStr
         4: .line 209
            aload 0 /* this */
            aload 3 /* valueStr */
            invokevirtual org.jasypt.properties.EncryptableProperties.decode:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 3 // java.lang.String valueStr
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object key
        end local 0 // org.jasypt.properties.EncryptableProperties this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/jasypt/properties/EncryptableProperties;
            0    5     1       key  Ljava/lang/Object;
            1    5     2     value  Ljava/lang/Object;
            4    5     3  valueStr  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      key   final

  java.lang.Integer getIdent();
    descriptor: ()Ljava/lang/Integer;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jasypt.properties.EncryptableProperties this
         0: .line 217
            aload 0 /* this */
            getfield org.jasypt.properties.EncryptableProperties.ident:Ljava/lang/Integer;
            areturn
        end local 0 // org.jasypt.properties.EncryptableProperties this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jasypt/properties/EncryptableProperties;

  private synchronized java.lang.String decode(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jasypt.properties.EncryptableProperties this
        start local 1 // java.lang.String encodedValue
         0: .line 226
            aload 1 /* encodedValue */
            invokestatic org.jasypt.properties.PropertyValueEncryptionUtils.isEncryptedValue:(Ljava/lang/String;)Z
            ifne 2
         1: .line 227
            aload 1 /* encodedValue */
            areturn
         2: .line 229
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jasypt.properties.EncryptableProperties.stringEncryptor:Lorg/jasypt/encryption/StringEncryptor;
            ifnull 4
         3: .line 230
            aload 1 /* encodedValue */
            aload 0 /* this */
            getfield org.jasypt.properties.EncryptableProperties.stringEncryptor:Lorg/jasypt/encryption/StringEncryptor;
            invokestatic org.jasypt.properties.PropertyValueEncryptionUtils.decrypt:(Ljava/lang/String;Lorg/jasypt/encryption/StringEncryptor;)Ljava/lang/String;
            areturn
         4: .line 233
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jasypt.properties.EncryptableProperties.textEncryptor:Lorg/jasypt/util/text/TextEncryptor;
            ifnull 6
         5: .line 234
            aload 1 /* encodedValue */
            aload 0 /* this */
            getfield org.jasypt.properties.EncryptableProperties.textEncryptor:Lorg/jasypt/util/text/TextEncryptor;
            invokestatic org.jasypt.properties.PropertyValueEncryptionUtils.decrypt:(Ljava/lang/String;Lorg/jasypt/util/text/TextEncryptor;)Ljava/lang/String;
            areturn
         6: .line 243
      StackMap locals:
      StackMap stack:
            new org.jasypt.exceptions.EncryptionOperationNotPossibleException
            dup
         7: .line 244
            ldc "Neither a string encryptor nor a text encryptor exist for this instance of EncryptableProperties. This is usually caused by the instance having been serialized and then de-serialized in a different classloader or virtual machine, which is an unsupported behaviour (as encryptors cannot be serialized themselves)"
         8: .line 243
            invokespecial org.jasypt.exceptions.EncryptionOperationNotPossibleException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.String encodedValue
        end local 0 // org.jasypt.properties.EncryptableProperties this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lorg/jasypt/properties/EncryptableProperties;
            0    9     1  encodedValue  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      encodedValue  final

  private void readObject(java.io.ObjectInputStream);
    descriptor: (Ljava/io/ObjectInputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.jasypt.properties.EncryptableProperties this
        start local 1 // java.io.ObjectInputStream in
         0: .line 257
            aload 1 /* in */
            invokevirtual java.io.ObjectInputStream.defaultReadObject:()V
         1: .line 260
            invokestatic org.jasypt.properties.EncryptablePropertiesEncryptorRegistry.getInstance:()Lorg/jasypt/properties/EncryptablePropertiesEncryptorRegistry;
         2: .line 259
            astore 2 /* registry */
        start local 2 // org.jasypt.properties.EncryptablePropertiesEncryptorRegistry registry
         3: .line 262
            aload 2 /* registry */
            aload 0 /* this */
            invokevirtual org.jasypt.properties.EncryptablePropertiesEncryptorRegistry.getStringEncryptor:(Lorg/jasypt/properties/EncryptableProperties;)Lorg/jasypt/encryption/StringEncryptor;
            astore 3 /* registeredStringEncryptor */
        start local 3 // org.jasypt.encryption.StringEncryptor registeredStringEncryptor
         4: .line 263
            aload 3 /* registeredStringEncryptor */
            ifnull 7
         5: .line 264
            aload 0 /* this */
            aload 3 /* registeredStringEncryptor */
            putfield org.jasypt.properties.EncryptableProperties.stringEncryptor:Lorg/jasypt/encryption/StringEncryptor;
         6: .line 265
            return
         7: .line 268
      StackMap locals: org.jasypt.properties.EncryptablePropertiesEncryptorRegistry org.jasypt.encryption.StringEncryptor
      StackMap stack:
            aload 2 /* registry */
            aload 0 /* this */
            invokevirtual org.jasypt.properties.EncryptablePropertiesEncryptorRegistry.getTextEncryptor:(Lorg/jasypt/properties/EncryptableProperties;)Lorg/jasypt/util/text/TextEncryptor;
            astore 4 /* registeredTextEncryptor */
        start local 4 // org.jasypt.util.text.TextEncryptor registeredTextEncryptor
         8: .line 269
            aload 4 /* registeredTextEncryptor */
            ifnull 10
         9: .line 270
            aload 0 /* this */
            aload 4 /* registeredTextEncryptor */
            putfield org.jasypt.properties.EncryptableProperties.textEncryptor:Lorg/jasypt/util/text/TextEncryptor;
        10: .line 273
      StackMap locals: org.jasypt.util.text.TextEncryptor
      StackMap stack:
            return
        end local 4 // org.jasypt.util.text.TextEncryptor registeredTextEncryptor
        end local 3 // org.jasypt.encryption.StringEncryptor registeredStringEncryptor
        end local 2 // org.jasypt.properties.EncryptablePropertiesEncryptorRegistry registry
        end local 1 // java.io.ObjectInputStream in
        end local 0 // org.jasypt.properties.EncryptableProperties this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   11     0                       this  Lorg/jasypt/properties/EncryptableProperties;
            0   11     1                         in  Ljava/io/ObjectInputStream;
            3   11     2                   registry  Lorg/jasypt/properties/EncryptablePropertiesEncryptorRegistry;
            4   11     3  registeredStringEncryptor  Lorg/jasypt/encryption/StringEncryptor;
            8   11     4    registeredTextEncryptor  Lorg/jasypt/util/text/TextEncryptor;
    Exceptions:
      throws java.io.IOException, java.lang.ClassNotFoundException
    MethodParameters:
      Name  Flags
      in    final

  private void writeObject(java.io.ObjectOutputStream);
    descriptor: (Ljava/io/ObjectOutputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.jasypt.properties.EncryptableProperties this
        start local 1 // java.io.ObjectOutputStream outputStream
         0: .line 280
            invokestatic org.jasypt.properties.EncryptablePropertiesEncryptorRegistry.getInstance:()Lorg/jasypt/properties/EncryptablePropertiesEncryptorRegistry;
         1: .line 279
            astore 2 /* registry */
        start local 2 // org.jasypt.properties.EncryptablePropertiesEncryptorRegistry registry
         2: .line 281
            aload 0 /* this */
            getfield org.jasypt.properties.EncryptableProperties.textEncryptor:Lorg/jasypt/util/text/TextEncryptor;
            ifnull 5
         3: .line 282
            aload 2 /* registry */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jasypt.properties.EncryptableProperties.textEncryptor:Lorg/jasypt/util/text/TextEncryptor;
            invokevirtual org.jasypt.properties.EncryptablePropertiesEncryptorRegistry.setTextEncryptor:(Lorg/jasypt/properties/EncryptableProperties;Lorg/jasypt/util/text/TextEncryptor;)V
         4: .line 283
            goto 7
      StackMap locals: org.jasypt.properties.EncryptablePropertiesEncryptorRegistry
      StackMap stack:
         5: aload 0 /* this */
            getfield org.jasypt.properties.EncryptableProperties.stringEncryptor:Lorg/jasypt/encryption/StringEncryptor;
            ifnull 7
         6: .line 284
            aload 2 /* registry */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jasypt.properties.EncryptableProperties.stringEncryptor:Lorg/jasypt/encryption/StringEncryptor;
            invokevirtual org.jasypt.properties.EncryptablePropertiesEncryptorRegistry.setStringEncryptor:(Lorg/jasypt/properties/EncryptableProperties;Lorg/jasypt/encryption/StringEncryptor;)V
         7: .line 287
      StackMap locals:
      StackMap stack:
            aload 1 /* outputStream */
            invokevirtual java.io.ObjectOutputStream.defaultWriteObject:()V
         8: .line 289
            return
        end local 2 // org.jasypt.properties.EncryptablePropertiesEncryptorRegistry registry
        end local 1 // java.io.ObjectOutputStream outputStream
        end local 0 // org.jasypt.properties.EncryptableProperties this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lorg/jasypt/properties/EncryptableProperties;
            0    9     1  outputStream  Ljava/io/ObjectOutputStream;
            2    9     2      registry  Lorg/jasypt/properties/EncryptablePropertiesEncryptorRegistry;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
              Name  Flags
      outputStream  final
}
SourceFile: "EncryptableProperties.java"