package bjc.data; public interface IContext { void register(String name, Object o); IContext getParent(); Object get(String name); T get(Class contract); default T get(String name, Class contract) { Object obj = get(name); return obj == null ? getParent().get(name, contract) : contract.cast(obj); }; }