static ISetAndGet iSetAndGet(ISetter setter, IF0 getter) {
ret new ISetAndGet {
public void set(A a) { setter?.set(a); }
public A get() { ret getter?!; }
};
}
static ISetAndGet iSetAndGet(B target, IVF2 setter, IF1 getter) {
ret new ISetAndGet {
public void set(A a) { if (target != null && setter != null) setter.get(target, a); }
public A get() { ret target == null || getter == null ? null : getter.get(target); }
};
}