Hay casos en los que ocurre lo mismo, pero en el caso del último hijo de un padre,

<< sib devolverá empty() y << next irá al siguiente nivel:
// the same:
New window("v1", mainLB = HList box(x = V list box( tb1 = Text Box("v1"), tb2=Text Box("2") ), tb3=text box (" 3")));
wait(0);
(current report()[TextBox(1)] << next()) << select;
New window("v2", mainLB = HList box(x = V list box( tb1 = Text Box("v2"), tb2=Text Box("2") ), tb3=text box (" 3")));
wait(0);
(current report()[TextBox(1)] << sib()) << select;
// << next walks to the next level and returns tb3
New window("v3", mainLB = HList box(x = V list box( tb1 = Text Box("v3"), tb2=Text Box("2") ), tb3=text box (" 3")));
wait(0);
(current report()[TextBox(2)] << next()) << select;
// << sib returns Empty - and select will fail
New window("v4", mainLB = HList box(x = V list box( tb1 = Text Box("v4"), tb2=Text Box("2") ), tb3=text box (" 3")));
wait(0);
(current report()[TextBox(2)] << sib()) << select;