public Dict getAttributes() { Prop on = this; if (!isCannon()) { Prop<T> already = (Prop<T>) findCannon(); if (already == null) { toCannon(); on.setCannon(); } else { on = already; } } return on.attributes == null ? (on.attributes = new Dict()) : on.attributes; }