static ListContext withParent(ListContext parent) {
   ListContext context = new ListContext();
   if (parent != null) {
     context.parent = parent;
     context.level = parent.level + 1;
   } else {
     context.level = 1;
   }
   return context;
 }