static SimpleLiveValue conceptFieldLiveValue(Concept c, S fieldName) { Class type = getFieldType(c, fieldName); SimpleLiveValue value = new(type, cget(c, fieldName)); // TODO: make mechanism for listening to a single concept onConceptChangeByClass_notOnAllChanged(c.getClass(), r { O o = cget(c, fieldName); value.set(o); }); value.onChange(r { cset(c, fieldName, value!); }); ret value; } static SimpleLiveValue mapMethodLike conceptFieldLiveValue(S fieldName, Concept c) { ret conceptFieldLiveValue(c, fieldName); }