pub type DecodeErrorResult<S, B, E> = Result<(S, Option<B>, usize), E>;