+ // initGroupingPath
+ StmtContext<?, GroupingStatement, EffectiveStatement<QName, GroupingStatement>> grpCtx = ctx.getFromNamespace(
+ GroupingNamespace.class, ctx.getStatementArgument());
+ this.groupingPath = grpCtx.getSchemaPath().get();
+
+ // initCopyType
+ List<TypeOfCopy> copyTypesFromOriginal = ctx.getCopyHistory();
+ if (copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_USES)) {
+ addedByUses = true;
+ } else {
+ addedByUses = false;
+ }
+
+ // initSubstatementCollections
+ Collection<? extends EffectiveStatement<?, ?>> effectiveSubstatements = effectiveSubstatements();
+ List<UnknownSchemaNode> unknownNodesInit = new LinkedList<>();
+ Set<AugmentationSchema> augmentationsInit = new HashSet<>();
+ Map<SchemaPath, SchemaNode> refinesInit = new HashMap<>();
+ for (EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements) {
+ if (effectiveStatement instanceof UnknownSchemaNode) {
+ UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement;
+ unknownNodesInit.add(unknownNode);
+ }
+ if (effectiveStatement instanceof AugmentationSchema) {
+ AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement;
+ augmentationsInit.add(augmentationSchema);
+ }
+ if (effectiveStatement instanceof RefineEffectiveStatementImpl) {
+ RefineEffectiveStatementImpl refineStmt = (RefineEffectiveStatementImpl) effectiveStatement;
+ SchemaNodeIdentifier identifier = refineStmt.argument();
+ refinesInit.put(identifier.asSchemaPath(), refineStmt.getRefineTargetNode());
+ }
+ }
+ this.unknownNodes = ImmutableList.copyOf(unknownNodesInit);
+ this.augmentations = ImmutableSet.copyOf(augmentationsInit);
+ this.refines = ImmutableMap.copyOf(refinesInit);