+ }
+ QName sourceStmtQName = (QName) sourceCtx.getStatementArgument();
+
+ RootStatementContext<?, ?, ?> root = targetCtx.getRoot();
+ do {
+ Verify.verify(targetCtx.getStatementArgument() instanceof QName,
+ "Argument of augment target statement must be QName.");
+ QName targetStmtQName = (QName) targetCtx.getStatementArgument();
+ /*
+ * If target is from another module, return true and perform
+ * mandatory nodes validation
+ */
+ if (!Utils.belongsToTheSameModule(targetStmtQName, sourceStmtQName)) {
+ return true;
+ } else {
+ /*
+ * If target or one of its parent is a presence container from
+ * the same module, return false and skip mandatory nodes
+ * validation
+ */
+ if (Utils.isPresenceContainer(targetCtx)) {
+ return false;
+ }
+ }
+ } while ((targetCtx = targetCtx.getParentContext()) != root);