pub type Path<T> = Vec<(Part<Spanned<T>>, Opt)>;
A path such as .[].a?[1:].
.[].a?[1:]
struct Path<T> { /* private fields */ }