docs: private void instrument(CtClass proxy, final SchemaPropertyRef ref) throws Exception {
          final Schema schema = schemas.get(ref.getSchemaName());
          checkNotNull(schema, "Schema not found for SchemaPropertyRef ["+ref+"]");
          final String fieldName = ref.getFieldName();
          // for help on javassist syntax, see chapter around javassist.expr.FieldAccess at
          // http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/tutorial/tutorial2.html#before
          proxy.instrument(new ExprEditor() {
              public void edit(FieldAccess f) throws CannotCompileException {
                  if (f.getFieldName().equals(ref.getFieldName())) {
                      StringBuilder code = new StringBuilder();
                      code.append("{");
                      code.append("$_=("+schema.getType()+") this."+PROXY_FIELD_NAME+".getObjectReference(\""+fieldName+"\", \""+schema.getName()+"\");");
                      code.append("}");
                      f.replace(code.toString());
                  }
              }
          });
      }