+ // Exposed for ImmutableMetadataNormalizedNodeStreamWriter
+ @SuppressWarnings("rawtypes")
+ void enter(final PathArgument identifier, final NormalizedNodeBuilder next) {
+ builders.push(next.withNodeIdentifier(identifier));
+ nextSchema = null;
+ }
+
+ // Exposed for ImmutableMetadataNormalizedNodeStreamWriter
+ protected final NormalizedNodeBuilder popBuilder() {
+ return builders.pop();
+ }
+
+ final void reset(final NormalizedNodeResultBuilder builder) {
+ nextSchema = null;
+ builders.clear();
+ builders.push(builder);
+ }
+
+ private <T> ImmutableLeafNodeBuilder<T> leafNodeBuilder(final DataSchemaNode schema) {
+ final InterningLeafNodeBuilder<T> interning = InterningLeafNodeBuilder.forSchema(schema);
+ return interning != null ? interning : leafNodeBuilder();
+ }
+
+ <T> ImmutableLeafNodeBuilder<T> leafNodeBuilder() {
+ return new ImmutableLeafNodeBuilder<>();
+ }
+
+ <T> ImmutableLeafSetEntryNodeBuilder<T> leafsetEntryNodeBuilder() {
+ return ImmutableLeafSetEntryNodeBuilder.create();
+ }
+
+ private void checkDataNodeContainer() {
+ @SuppressWarnings("rawtypes")
+ final NormalizedNodeContainerBuilder current = currentContainer();
+ if (!(current instanceof NormalizedNodeResultBuilder)) {
+ checkArgument(current instanceof DataContainerNodeBuilder<?, ?>, "Invalid nesting of data.");