{
Decoder decoder;
Object keepOpen;
final ChannelDataInput input = storage.getStorageAs(ChannelDataInput.class);
if (input != null) try {
decoder = new ChannelDecoder(listeners, input);
keepOpen = input;
} catch (DataStoreException e) {
final String path = storage.getStorageAs(String.class);
if (path != null) {
decoder = createByReflection(listeners, path, false);