--- /dev/null
+/*\r
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.yangtools.yang.model.api;\r
+\r
+import java.util.Set;\r
+\r
+import org.opendaylight.yangtools.yang.common.QName;\r
+\r
+/**\r
+ * Node which can contains other nodes.\r
+ */\r
+public interface DataNodeContainer {\r
+\r
+ /**\r
+ * Returns set of all newly defined types within this DataNodeContainer.\r
+ *\r
+ * @return typedef statements in lexicographical order\r
+ */\r
+ Set<TypeDefinition<?>> getTypeDefinitions();\r
+\r
+ /**\r
+ * Returns set of all child nodes defined within this DataNodeContainer.\r
+ *\r
+ * @return child nodes in lexicographical order\r
+ */\r
+ Set<DataSchemaNode> getChildNodes();\r
+\r
+ /**\r
+ * Returns set of all groupings defined within this DataNodeContainer.\r
+ *\r
+ * @return grouping statements in lexicographical order\r
+ */\r
+ Set<GroupingDefinition> getGroupings();\r
+\r
+ /**\r
+ * @param name\r
+ * QName of seeked child\r
+ * @return child node of this DataNodeContainer if child with given name is\r
+ * present, null otherwise\r
+ */\r
+ DataSchemaNode getDataChildByName(QName name);\r
+\r
+ /**\r
+ * @param name\r
+ * name of seeked child as String\r
+ * @return child node of this DataNodeContainer if child with given name is\r
+ * present, null otherwise\r
+ */\r
+ DataSchemaNode getDataChildByName(String name);\r
+\r
+ /**\r
+ * @return Set of all uses nodes defined within this DataNodeContainer\r
+ */\r
+ Set<UsesNode> getUses();\r
+\r
+}\r