static boolean forEachChildRecursive(Node parent, NodeVisitor visitor) { NodeClass parentNodeClass = parent.getNodeClass(); for (NodeFieldAccessor field : parentNodeClass.getChildFields()) { if (!visitChild((Node) field.getObject(parent), visitor)) { return false; } } for (NodeFieldAccessor field : parentNodeClass.getChildrenFields()) { Object arrayObject = field.getObject(parent); if (arrayObject == null) { continue; } Object[] array = (Object[]) arrayObject; for (int i = 0; i < array.length; i++) { if (!visitChild((Node) array[i], visitor)) { return false; } } } return true; }
static boolean forEachChildRecursive(Node parent, NodeVisitor visitor) { NodeClass nodeClass = parent.getNodeClass(); for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field)) { if (!visitChild((Node) nodeClass.getFieldObject(field, parent), visitor)) { return false; } } else if (nodeClass.isChildrenField(field)) { Object arrayObject = nodeClass.getFieldObject(field, parent); if (arrayObject == null) { continue; } Object[] array = (Object[]) arrayObject; for (int i = 0; i < array.length; i++) { if (!visitChild((Node) array[i], visitor)) { return false; } } } else if (nodeClass.nodeFieldsOrderedByKind()) { break; } } return true; }
static boolean forEachChildRecursive(Node parent, NodeVisitor visitor) { NodeClass nodeClass = parent.getNodeClass(); for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field)) { if (!visitChild((Node) nodeClass.getFieldObject(field, parent), visitor)) { return false; } } else if (nodeClass.isChildrenField(field)) { Object arrayObject = nodeClass.getFieldObject(field, parent); if (arrayObject == null) { continue; } Object[] array = (Object[]) arrayObject; for (int i = 0; i < array.length; i++) { if (!visitChild((Node) array[i], visitor)) { return false; } } } else if (nodeClass.nodeFieldsOrderedByKind()) { break; } } return true; }