code: private ConversationMetadata resolveMetadata() throws ConversationMetadataLoadException {
  		checkConversationQueue();
  
  		try {
  			// attempt to load the encrypted metadata file
  			File metaFile = new File(conversationsStorageDir, CONVERSATION_METADATA_FILE);
  			if (metaFile.exists()) {
  				ApptentiveLog.v(CONVERSATION, "Loading metadata file: %s", metaFile);
  				return ObjectSerialization.deserialize(metaFile, ConversationMetadata.class, encryptionKey);
  			}
  
  			// attempt to load the legacy metadata file
  			metaFile = new File(conversationsStorageDir, CONVERSATION_METADATA_FILE_LEGACY_V1);
  			if (metaFile.exists()) {
  				ApptentiveLog.v(CONVERSATION, "Loading legacy v1 metadata file: %s", metaFile);
  				try {
  					return ObjectSerialization.deserialize(metaFile, ConversationMetadata.class);
  				} finally {
  					// we need to delete the legacy file to avoid the data being loaded next time
  					boolean fileDeleted = metaFile.delete();
  					ApptentiveLog.v(CONVERSATION, "Legacy metadata file deleted: %b", fileDeleted);
  				}
  			}
  
  			ApptentiveLog.v(CONVERSATION, "No metadata files");
  		} catch (Exception e) {
  			ApptentiveLog.e(CONVERSATION, e, "Exception while loading conversation metadata");
  			logException(e);
  			// if we fail to load the metadata - we would not create a new one - just throw an exception
  			throw new ConversationMetadataLoadException("Unable to load metadata", e);
  		}
  
  		return new ConversationMetadata();
  	}
docs: region Metadata