+ }
+
+
+ public interface InstanceIdentifierBuilder<T extends DataObject> extends Builder<InstanceIdentifier<T>> {
+ /**
+ * Append the specified container as a child of the current InstanceIdentifier referenced by the builder.
+ *
+ * This method should be used when you want to build an instance identifier by appending top-level
+ * elements
+ *
+ * Example,
+ * <pre>
+ * InstanceIdentifier.builder().child(Nodes.class).build();
+ *
+ * </pre>
+ *
+ * NOTE :- The above example is only for illustration purposes InstanceIdentifier.builder() has been deprecated
+ * and should not be used. Use InstanceIdentifier.builder(Nodes.class) instead
+ *
+ * @param container
+ * @param <N>
+ * @return
+ */
+ <N extends ChildOf<? super T>> InstanceIdentifierBuilder<N> child(
+ Class<N> container);
+
+ /**
+ * Append the specified listItem as a child of the current InstanceIdentifier referenced by the builder.
+ *
+ * This method should be used when you want to build an instance identifier by appending a specific list element
+ * to the identifier
+ *
+ * @param listItem
+ * @param listKey
+ * @param <N>
+ * @param <K>
+ * @return
+ */
+ <N extends Identifiable<K> & ChildOf<? super T>, K extends Identifier<N>> InstanceIdentifierBuilder<N> child(
+ Class<N> listItem, K listKey);
+
+ /**
+ * Build an identifier which refers to a specific augmentation of the current InstanceIdentifier referenced by
+ * the builder
+ *
+ * @param container
+ * @param <N>
+ * @return
+ */
+ <N extends DataObject & Augmentation<? super T>> InstanceIdentifierBuilder<N> augmentation(
+ Class<N> container);
+
+ /**
+ * Build the instance identifier.
+ *
+ * @return
+ */
+ InstanceIdentifier<T> build();