@Override
public <T> void putValue(String key, T value, PreferenceKeyMetadata<T> keyMetadata) throws UnsupportedDataTypeException, PreferencesException
{
if (!byte[].class.equals(keyMetadata.getDataType().getRawType()))
throw new UnsupportedDataTypeException(keyMetadata.getDataType());
byte[] bValue = (byte[])value;
bValue = encrypt(bValue);
originalChain.putValue(key, bValue, keyMetadata.withDataType(byte[].class));