sclass SimpleLiveValue<A> extends LiveValue<A> is IVarWithNotify<A> {
  event change;
  Class<A> type;
  volatile A value;
  
  *(Class<A> *type) {}
  *(Class<A> *type, A *value) {}
  
  public Class<A> getType() { ret type; }
  public A get() { ret value; }

  void fireChanged { change(); }
  public void set(A a) { if (neq(value, a)) { value = a; fireChanged(); } }
}