pub fn parse_inner_block<I, E, F>(
    kind: NestedBlockKind,
    f: &F
) -> impl FnMut(I) -> IResult<I, I, E> + '_where
    I: Span,
    &'static str: FindToken<<I as InputTakeAtPosition>::Item>,
    I: ToString + InputLength + InputTake + Compare<&'static str> + InputIter + Clone + InputTakeAtPosition,
    <I as InputTakeAtPosition>::Item: AsChar + Copy,
    I: ToString,
    I: Offset + Slice<RangeTo<usize>>,
    I: Slice<RangeFrom<usize>>,
    <I as InputIter>::Item: AsChar + Copy,
    E: ContextError<I> + ParseError<I>,
    F: Fn(char) -> bool,
    F: Clone,