svoid test_tok_settableFields() {
  testTranspilationFunction tok_settableFields(
    "settable S bla;",
    //"selfType bla(S bla) { this.bla = bla; this; }  S bla() { ret bla; } S bla;",
    "public selfType bla aka setBla(S bla) { this.bla = bla; this; }\n"
      + "public S bla aka getBla() { ret bla; } S bla;",
      
    "settable volatile S bla;",
    "public selfType bla aka setBla(S bla) { this.bla = bla; this; }\n"
      + "public S bla aka getBla() { ret bla; } volatile S bla;",
      
    "transient settable S bla;",
    "public selfType bla aka setBla(S bla) { this.bla = bla; this; }\n"
      + "public S bla aka getBla() { ret bla; } transient S bla;",
      
    "settable volatile A<B> bla;",
    "public selfType bla aka setBla(A<B> bla) { this.bla = bla; this; }\n"
      + "public A<B> bla aka getBla() { ret bla; } volatile A<B> bla;",
      
    // setter with change event firing
    "settableWithChange S blu;",
    "public selfType blu aka setBlu(S blu) { if (!eq(this.blu, blu)) { this.blu = blu; change(); } this; }\n"
      + "public S blu aka getBlu() { ret blu; } S blu;",
      
    // void settable = setter returns void
    "void settable S bla;",
    "public void bla aka setBla(S bla) { this.bla = bla; }\n"
      + "public S bla aka getBla() { ret bla; } S bla;",
      
    // setter with FieldVar
    "settableWithVar S blu;",
    "public transient simplyCached FieldVar<S> varBlu()\n" +
      "{ ret new FieldVar<S>(this, \"blu\", -> blu(), blu -> blu(blu)); }\n" +
    "public selfType blu aka setBlu(S blu) { if (!eq(this.blu, blu)) { this.blu = blu; change(); } this; }\n"
      + "public S blu aka getBlu() { ret blu; } S blu;",
  );
}