pub type OrNonEmpty<I, T> = Iterator1<Chain<Peekable<I>, EmptyOrInto<T>>>;
pub struct OrNonEmpty<I, T> { /* private fields */ }