class UmpleToJava {
    association_AddOptionalNToOptionalOne_relatedSpecialization <<!<</*association_AddOptionalNToOptionalOne_relatedSpecialization*/>>
  <<#if (model.isDebugMode()) {
    Method g_method = new Method("public", gen.translate("addMethod",av), "Boolean", false);
    MethodParameter g_param1 = new MethodParameter(gen.translate("parameterOne",av), gen.translate("type",av), "", "", false);
    g_method.addMethodParameter(g_param1);
    debugAutogeneratedMethod(g_method, uClass, model);
  }#>>
  public boolean <<=gen.translate("addMethod",av)>>(<<=gen.translate("type",av)>> <<=gen.translate("parameterOne",av)>>)
  {
    boolean wasAdded = false;
    <<# if (customAddPrefixCode != null) { addUncaughtExceptionVariables(realSb.toString().split("\\n").length,customAddPrefixCode,gen.translate("addMethod",av)); 
    append(realSb, "\n{0}",GeneratorHelper.doIndent(customAddPrefixCode, "    ")); } #>>
    if (<<=gen.translate("numberOfMethod",av)>>() >= <<=gen.translate("maximumNumberOfMethod",av)>>_<<=gen.translate("type",av)>>())
    {
      <<# if (customAddPostfixCode != null) { addUncaughtExceptionVariables(realSb.toString().split("\\n").length,customAddPostfixCode,gen.translate("addMethod",av)); 
      append(realSb, "\n{0}",GeneratorHelper.doIndent(customAddPostfixCode, "      ")); } #>>
      return wasAdded;
    }

    <<=gen.relatedTranslate("type",av)>> <<=gen.relatedTranslate("parameterExisting",av)>> = <<=gen.translate("parameterOne",av)>>.<<=gen.relatedTranslate("getMethod",av)>><<# if (relMulChangedToOne) { #>>_One<<=gen.relatedTranslate("type",av)>><<# } #>>();<<#for( TraceItem traceItemAssocAdd : traceItemAssocAdds )#>><<= 
(traceItemAssocAdd!=null&&traceItemAssocAdd.getIsPre()?"\n"+traceItemAssocAdd.trace(gen, av,"as_a", uClass,gen.translate("numberOfMethod",av)+"()"):"")
>>
    if (<<=gen.relatedTranslate("parameterExisting",av)>> == null)
    {
      <<=gen.translate("parameterOne",av)>>.<<=gen.relatedTranslate("setMethod",av)>>(this);
    }
    else if (!this.equals(<<=gen.relatedTranslate("parameterExisting",av)>>))
    {
      <<=gen.relatedTranslate("parameterExisting",av)>>.<<=gen.translate("removeMethod",av)>>(<<=gen.translate("parameterOne",av)>>);
      <<=gen.translate("addMethod",av)>>(<<=gen.translate("parameterOne",av)>>);
    }
    else
    {
      <<=gen.translate("associationMany",av)>>.add(<<=gen.translate("parameterOne",av)>>);
    }<<#for( TraceItem traceItemAssocAdd : traceItemAssocAdds )#>><<= 
(traceItemAssocAdd!=null&&traceItemAssocAdd.getIsPost()?"\n"+traceItemAssocAdd.trace(gen, av,"as_a", uClass,gen.translate("numberOfMethod",av)+"()"):"")
>>
    wasAdded = true;
    <<# if (customAddPostfixCode != null) { addUncaughtExceptionVariables(realSb.toString().split("\\n").length,customAddPostfixCode,gen.translate("addMethod",av)); 
    append(realSb, "\n{0}",GeneratorHelper.doIndent(customAddPostfixCode, "    ")); } #>>
    return wasAdded;
  }

  <<#if (model.isDebugMode()) {
    Method g_method = new Method("public", gen.translate("removeMethod",av), "Boolean", false);
    MethodParameter g_param1 = new MethodParameter(gen.translate("parameterOne",av), gen.translate("type",av), "", "", false);
    g_method.addMethodParameter(g_param1);
    debugAutogeneratedMethod(g_method, uClass, model);
  }#>>
  public boolean <<=gen.translate("removeMethod",av)>>(<<=gen.translate("type",av)>> <<=gen.translate("parameterOne",av)>>)
  {
    boolean wasRemoved = false;
    <<# if (customRemovePrefixCode != null) { addUncaughtExceptionVariables(realSb.toString().split("\\n").length,customRemovePrefixCode,gen.translate("removeMethod",av)); 
    append(realSb, "\n{0}",GeneratorHelper.doIndent(customRemovePrefixCode, "    ")); } #>>
    if (<<=gen.translate("associationMany",av)>>.contains(<<=gen.translate("parameterOne",av)>>))
    {<<#for( TraceItem traceItemAssocRemove : traceItemAssocRemoves )#>><<= 
(traceItemAssocRemove!=null&&traceItemAssocRemove.getIsPre()?"\n"+traceItemAssocRemove.trace(gen, av,"as_r", uClass,gen.translate("numberOfMethod",av)+"()"):"")
>>
      <<=gen.translate("associationMany",av)>>.remove(<<=gen.translate("parameterOne",av)>>);<<#for( TraceItem traceItemAssocRemove : traceItemAssocRemoves )#>><<= 
(traceItemAssocRemove!=null&&traceItemAssocRemove.getIsPost()?"\n"+traceItemAssocRemove.trace(gen, av,"as_r", uClass,gen.translate("numberOfMethod",av)+"()"):"")
>>
      <<=gen.translate("parameterOne",av)>>.clear_<<=gen.relatedTranslate("associationOne",av)>>();
      wasRemoved = true;
    }
    <<# if (customRemovePostfixCode != null) { addUncaughtExceptionVariables(realSb.toString().split("\\n").length,customRemovePostfixCode,gen.translate("removeMethod",av)); 
    append(realSb, "\n{0}",GeneratorHelper.doIndent(customRemovePostfixCode, "    ")); } #>>
    return wasRemoved;
  }
!>>
}
