protected void generateSetObjectKeyMethod(SourcePrinter srcWriter) {
    srcWriter.println(
        "protected void setObjectKey("
            + getTargetObjectClassName()
            + " object, "
            + getKeyTypeName()
            + " key){");

    if (hasCompositeKey()) {
      for (int i = 0; i < keyPath.length; i++) {
        String k = keyPath[i];
        JType jType = JClassUtils.getTypeForProperty(k, targetObjectType);
        String setterMethod = JClassUtils.getSetterMethod(k, targetObjectType, jType);
        srcWriter.println(
            "object."
                + setterMethod
                + "((key==null?null:("
                + jType.getParameterizedQualifiedSourceName()
                + ")key["
                + i
                + "]));");
      }
    } else {
      String k = keyPath[0];
      JType jType = JClassUtils.getTypeForProperty(k, targetObjectType);
      String setterMethod = JClassUtils.getSetterMethod(k, targetObjectType, jType);
      srcWriter.println("object." + setterMethod + "(key);");
    }
    srcWriter.println("}");
    srcWriter.println();
  }