package edu.uw.zookeeper.data;
import java.util.Map;
import javax.annotation.Nonnull;
import com.google.common.base.Supplier;
public interface NameTrie<E extends NameTrie.Node<E>> extends Map<ZNodePath, E>, Iterable<E> {
public static interface Pointer<E extends Node<E>> extends Supplier<E> {
ZNodeName name();
E get();
}
public static interface Node<E extends Node<E>> extends Map<ZNodeName, E> {
Pointer<? extends E> parent();
ZNodePath path();
}
abstract public @Nonnull E root();
abstract public @Nonnull E longestPrefix(ZNodePath path);
}