+ public <A extends Augmentation<?>> BindingAugmentationCodecTreeNode<A> getAugmentationCodec(
+ final InstanceIdentifier<A> path) {
+ final var codecContext = getCodecContextNode(path, null);
+ if (codecContext instanceof BindingAugmentationCodecTreeNode) {
+ return (BindingAugmentationCodecTreeNode<A>) codecContext;
+ }
+ throw new IllegalArgumentException(path + " does not refer to an Augmentation");
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T extends DataObject> BindingDataObjectCodecTreeNode<T> getDataObjectCodec(
+ final InstanceIdentifier<T> path) {
+ final var codecContext = getCodecContextNode(path, null);
+ if (codecContext instanceof BindingDataObjectCodecTreeNode) {
+ return (BindingDataObjectCodecTreeNode<T>) codecContext;
+ }
+ throw new IllegalArgumentException(path + " does not refer to a plain DataObject");
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T extends DataObject> CodecWithPath<T> getSubtreeCodecWithPath(final InstanceIdentifier<T> path) {
+ final var yangArgs = new ArrayList<YangInstanceIdentifier.PathArgument>();
+ final var codecContext = getCodecContextNode(path, yangArgs);
+