concept G22Variable extends ConceptWithChangeListeners is IPersistenceInfo { S name; settableWithVar volatile O value; settable bool persistent; // big = value is stored in separate file settable bool big; // field "value" is persisted iff field "persistent" is set public Map _persistenceInfo() { ret litmap(value := persistent); } O get() { ret value; } void setValueIfNull(O defaultValue) { if (defaultValue != null && value == null) value(defaultValue); } }