Decoders can throw checked exceptions, but needn't declare Throwable