@SuppressWarnings("unchecked") public <T> T getOrConstruct(Prop<T> key) { Prop<T> cc = key.findCannon(); if (cc != null && cc.autoConstructor != null) { return (T) dictionary.computeIfAbsent(key, k -> cc.autoConstructor.get()); } return get(key); }