+
+ default <A extends Augmentation<?>> @NonNull BindingAugmentationCodecTreeNode<A> getStreamAugmentation(
+ final @NonNull Class<A> childClass) {
+ final var result = getStreamChild(childClass);
+ if (result instanceof BindingAugmentationCodecTreeNode) {
+ return (BindingAugmentationCodecTreeNode<A>) result;
+ }
+ throw new IllegalArgumentException("Child " + childClass.getName() + " results in non-Augmentation " + result);
+ }
+
+ default <E extends DataObject> @NonNull BindingDataObjectCodecTreeNode<E> getStreamDataObject(
+ final @NonNull Class<E> childClass) {
+ final var result = getStreamChild(childClass);
+ if (result instanceof BindingDataObjectCodecTreeNode) {
+ return (BindingDataObjectCodecTreeNode<E>) result;
+ }
+ throw new IllegalArgumentException("Child " + childClass.getName() + " results in non-DataObject " + result);
+ }