public byte[] decrypt(final byte[] ciphertext, final byte[] associatedData)
      throws GeneralSecurityException {
    if (aead != null) {
      return this.aead.decrypt(ciphertext, associatedData);
    } else {
      return this.deterministicAead.decryptDeterministically(ciphertext, associatedData);
    }
  }
Decrypts {@code ciphertext} with {@code associatedData} as associated authenticated data. The
decryption verifies the authenticity and integrity of the associated data, but there are no
guarantees wrt. secrecy of that data.

@param ciphertext the plaintext to be decrypted. It must be non-null.
@param associatedData associated data to be authenticated. For successful decryption it must be
    the same as associatedData used during encryption. Can be null, which is equivalent to an
    empty (zero-length) byte array.
@return resulting plaintext
java_src/src/main/java/com/google/crypto/tink/hybrid/subtle/AeadOrDaead.java