class com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper<KeyFormatProtoT extends com.google.protobuf.MessageLite, KeyProtoT extends com.google.protobuf.MessageLite>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper
  super_class: java.lang.Object
{
  final com.google.crypto.tink.KeyTypeManager$KeyFactory<KeyFormatProtoT, KeyProtoT> keyFactory;
    descriptor: Lcom/google/crypto/tink/KeyTypeManager$KeyFactory;
    flags: (0x0010) ACC_FINAL
    Signature: Lcom/google/crypto/tink/KeyTypeManager$KeyFactory<TKeyFormatProtoT;TKeyProtoT;>;

  void <init>(com.google.crypto.tink.KeyTypeManager$KeyFactory<KeyFormatProtoT, KeyProtoT>);
    descriptor: (Lcom/google/crypto/tink/KeyTypeManager$KeyFactory;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper this
        start local 1 // com.google.crypto.tink.KeyTypeManager$KeyFactory keyFactory
         0: .line 152
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 153
            aload 0 /* this */
            aload 1 /* keyFactory */
            putfield com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper.keyFactory:Lcom/google/crypto/tink/KeyTypeManager$KeyFactory;
         2: .line 154
            return
        end local 1 // com.google.crypto.tink.KeyTypeManager$KeyFactory keyFactory
        end local 0 // com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper<TKeyFormatProtoT;TKeyProtoT;>;
            0    3     1  keyFactory  Lcom/google/crypto/tink/KeyTypeManager$KeyFactory<TKeyFormatProtoT;TKeyProtoT;>;
    Signature: (Lcom/google/crypto/tink/KeyTypeManager$KeyFactory<TKeyFormatProtoT;TKeyProtoT;>;)V
    MethodParameters:
            Name  Flags
      keyFactory  

  private KeyProtoT validateCreate();
    descriptor: (Lcom/google/protobuf/MessageLite;)Lcom/google/protobuf/MessageLite;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper this
        start local 1 // com.google.protobuf.MessageLite keyFormat
         0: .line 159
            aload 0 /* this */
            getfield com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper.keyFactory:Lcom/google/crypto/tink/KeyTypeManager$KeyFactory;
            aload 1 /* keyFormat */
            invokevirtual com.google.crypto.tink.KeyTypeManager$KeyFactory.validateKeyFormat:(Lcom/google/protobuf/MessageLite;)V
         1: .line 160
            aload 0 /* this */
            getfield com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper.keyFactory:Lcom/google/crypto/tink/KeyTypeManager$KeyFactory;
            aload 1 /* keyFormat */
            invokevirtual com.google.crypto.tink.KeyTypeManager$KeyFactory.createKey:(Lcom/google/protobuf/MessageLite;)Ljava/lang/Object;
            checkcast com.google.protobuf.MessageLite
            areturn
        end local 1 // com.google.protobuf.MessageLite keyFormat
        end local 0 // com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper<TKeyFormatProtoT;TKeyProtoT;>;
            0    2     1  keyFormat  TKeyFormatProtoT;
    Exceptions:
      throws java.security.GeneralSecurityException
    Signature: (TKeyFormatProtoT;)TKeyProtoT;
    MethodParameters:
           Name  Flags
      keyFormat  

  KeyProtoT parseValidateCreate(com.google.protobuf.ByteString);
    descriptor: (Lcom/google/protobuf/ByteString;)Lcom/google/protobuf/MessageLite;
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper this
        start local 1 // com.google.protobuf.ByteString serializedKeyFormat
         0: .line 165
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper.keyFactory:Lcom/google/crypto/tink/KeyTypeManager$KeyFactory;
            aload 1 /* serializedKeyFormat */
            invokevirtual com.google.crypto.tink.KeyTypeManager$KeyFactory.parseKeyFormat:(Lcom/google/protobuf/ByteString;)Lcom/google/protobuf/MessageLite;
            invokevirtual com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper.validateCreate:(Lcom/google/protobuf/MessageLite;)Lcom/google/protobuf/MessageLite;
            areturn
        end local 1 // com.google.protobuf.ByteString serializedKeyFormat
        end local 0 // com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    1     0                 this  Lcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper<TKeyFormatProtoT;TKeyProtoT;>;
            0    1     1  serializedKeyFormat  Lcom/google/protobuf/ByteString;
    Exceptions:
      throws java.security.GeneralSecurityException, com.google.protobuf.InvalidProtocolBufferException
    Signature: (Lcom/google/protobuf/ByteString;)TKeyProtoT;
    MethodParameters:
                     Name  Flags
      serializedKeyFormat  

  KeyProtoT castValidateCreate(com.google.protobuf.MessageLite);
    descriptor: (Lcom/google/protobuf/MessageLite;)Lcom/google/protobuf/MessageLite;
    flags: (0x0000) 
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper this
        start local 1 // com.google.protobuf.MessageLite message
         0: .line 169
            aload 0 /* this */
         1: .line 171
            aload 1 /* message */
         2: .line 172
            new java.lang.StringBuilder
            dup
            ldc "Expected proto of type "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper.keyFactory:Lcom/google/crypto/tink/KeyTypeManager$KeyFactory;
            invokevirtual com.google.crypto.tink.KeyTypeManager$KeyFactory.getKeyFormatClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 173
            aload 0 /* this */
            getfield com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper.keyFactory:Lcom/google/crypto/tink/KeyTypeManager$KeyFactory;
            invokevirtual com.google.crypto.tink.KeyTypeManager$KeyFactory.getKeyFormatClass:()Ljava/lang/Class;
         4: .line 170
            invokestatic com.google.crypto.tink.KeyManagerImpl.castOrThrowSecurityException:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.google.protobuf.MessageLite
         5: .line 169
            invokevirtual com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper.validateCreate:(Lcom/google/protobuf/MessageLite;)Lcom/google/protobuf/MessageLite;
            areturn
        end local 1 // com.google.protobuf.MessageLite message
        end local 0 // com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lcom/google/crypto/tink/KeyManagerImpl$KeyFactoryHelper<TKeyFormatProtoT;TKeyProtoT;>;
            0    6     1  message  Lcom/google/protobuf/MessageLite;
    Exceptions:
      throws java.security.GeneralSecurityException
    Signature: (Lcom/google/protobuf/MessageLite;)TKeyProtoT;
    MethodParameters:
         Name  Flags
      message  
}
Signature: <KeyFormatProtoT::Lcom/google/protobuf/MessageLite;KeyProtoT::Lcom/google/protobuf/MessageLite;>Ljava/lang/Object;
SourceFile: "KeyManagerImpl.java"
NestHost: com.google.crypto.tink.KeyManagerImpl
InnerClasses:
  private KeyFactoryHelper = com.google.crypto.tink.KeyManagerImpl$KeyFactoryHelper of com.google.crypto.tink.KeyManagerImpl
  public abstract KeyFactory = com.google.crypto.tink.KeyTypeManager$KeyFactory of com.google.crypto.tink.KeyTypeManager