Result (XmlElementDescriptor element) { getLastChild(); while (myLastChild != null) { Result result = myLastChild.doTransition(element); switch (result) { case CONSUME -> { return Result.CONSUME; } case NONE -> myLastChild = getNextSubGroup(); case PROCEED_TO_NEXT -> { myLastChild = getNextSubGroup(); return myLastChild == null ? Result.PROCEED_TO_NEXT : Result.CONSUME; } } } return Result.NONE; }