- return factory.getMapNodeParser().parse(childNodes, (ListSchemaNode) schema);
- } else if (schema instanceof ChoiceNode) {
- return factory.getChoiceNodeParser().parse(childNodes, (ChoiceNode) schema);
+ final ListSchemaNode listSchemaNode = (ListSchemaNode)schema;
+ if (listSchemaNode.getKeyDefinition().isEmpty()) {
+ return factory.getUnkeyedListNodeParser().parse(childNodes, listSchemaNode);
+ } else if (listSchemaNode.isUserOrdered()) {
+ return factory.getOrderedListNodeParser().parse(childNodes, listSchemaNode);
+ } else {
+ return factory.getMapNodeParser().parse(childNodes, listSchemaNode);
+ }
+ } else if (schema instanceof ChoiceSchemaNode) {
+ return factory.getChoiceNodeParser().parse(childNodes, (ChoiceSchemaNode) schema);