private void propHandlerByteCodePut(String property, Object ctx, Class handler, Object value) {
    PropertyHandler ph = getPropertyHandler(handler);
    if (ph instanceof ProducesBytecode) {
      assert debug("<<3rd-Party Code Generation>>");
      ((ProducesBytecode) ph).produceBytecodePut(mv, property, variableFactory);
      ph.setProperty(property, ctx, variableFactory, value);
    }
    else {
      throw new RuntimeException("unable to compileShared: custom accessor does not support producing bytecode: "
          + ph.getClass().getName());
    }
  }