Do not instantiate needless objects in augment
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / spi / meta / StmtContext.java
index a4cb0a6ea4ef7e061482d8b915d114b02c25d284..f6bd7abf68febf83efaae0d5c78ac408ed2e11f1 100644 (file)
@@ -7,9 +7,12 @@
  */
 package org.opendaylight.yangtools.yang.parser.spi.meta;
 
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Streams;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Optional;
+import java.util.stream.Stream;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QNameModule;
@@ -92,6 +95,14 @@ public interface StmtContext<A, D extends DeclaredStatement<A>, E extends Effect
     @Nonnull
     Collection<? extends StmtContext<?, ?, ?>> effectiveSubstatements();
 
+    default Iterable<? extends StmtContext<?, ?, ?>> allSubstatements() {
+        return Iterables.concat(declaredSubstatements(), effectiveSubstatements());
+    }
+
+    default Stream<? extends StmtContext<?, ?, ?>> allSubstatementsStream() {
+        return Streams.concat(declaredSubstatements().stream(), effectiveSubstatements().stream());
+    }
+
     /**
      * Builds {@link DeclaredStatement} for statement context.
      */