package xapi.gen;
import xapi.fu.Immutable;
import xapi.gen.NodeWithParentWithChildren.ChildStack;
/**
* @author James X. Nelson (james@wetheinter.net)
* Created on 12/27/15.
*/
public interface TestBufferTypeWithChildren<
Parent extends TestBufferType<? extends GenBuffer, Parent>,
Self extends TestBufferTypeWithChildren<Parent, Self, Child>,
Child extends TestBufferType<Self, ? extends Child>
> extends TestBufferType<Parent, Self> {
TestBufferAncestor ancestor();
default <C extends Child> NodeWithParentWithChildren<Parent, Self, Child, ChildStack<C>> ctx(Class<? super C> childType) {
return new NodeWithParentWithChildren<Parent, Self, Child, ChildStack<C>>() {
@Override
protected ChildStack<C> newStack(Child child) {
return new ChildStack<>(Immutable.immutable1((C)child));
}
};
}
}