Duplicar ID de componente en JSF usando componente compuesto dos veces a la vista

"Heredé" una aplicación JSF 2 (JSF 2.2.7) en mi empresa y enfrente una java.lang.IllegalStateException porque dos componentes parecen tener la misma ID.

La estructura de la vista es la siguiente (extraje el código relevante con fines ilustrativos, puede contener algunos errores tipográficos / sintaxis no válida al cambiar algunos nombres):

<p:commandButton id="editButton"
   action="#{controller.prepareItem()}"
   update=":itemEditDlg" oncomplete="PF('itemtEditDlg').show()" />


<comp:editItemDlg id="itemEditDlg"  />

<p:dialog id="anotherDlg" >
   <h:form id="anotherForm">
      <c:forEach items="#{controller.allArgs}" var="arg" >
         <!-- next line is the problem -->
         <comp:mycomponent arg="#{arg}"  />
      </c:forEach>
   </h:form>
</p:dialog>

mycomponent.xhtml tiene el siguiente aspecto:

<cc:interface>
    <cc:attribute name="arg" required="true" />
</cc:interface>
<cc:implementation>
    <p:inputText id="argValue" value="#{cc.attrs.arg}" />
    <p:message id="argValueMessage" for="argValue" />
</cc:implementation>

Importante: El componente mycomponent también se usa dentro de editItemDlg (de la misma manera que en "anotherDlg"), es decir, dentro de un diálogo y para cada bucle)

Si hago clic en editButton, obtengo:

java.lang.IllegalArgumentException: Component ID anotherForm:j_idt192:argValue  
has already been found in the view.

Es bastante extraño porque el "anotherDlg" no está abierto en este caso, pero aparentemente ya se ha procesado.

Recibo la siguiente información en StackTrace (solo se muestran las partes relevantes):

         +id: j_idt192
             type: javax.faces.component.UINamingContainer@399bd0dc
              +id: j_id2
               type: javax.faces.component.UIPanel@24ad3910
                +id: argValue  <===============
                 type: org.primefaces.component.inputtext.InputText@687d5c3f
                +id: argValueMessage
                 type: org.primefaces.component.message.Message@7e3361b0
                +id: argValue  <===============
                 type: org.primefaces.component.inputtext.InputText@5f52aa8a
                +id: argValueMessage
                 type: org.primefaces.component.message.Message@2c3a7aea

Entonces, de alguna manera, estos componentes se representan dos veces, pero no puedo entender por qué.

He pasado porPues contesta&nbsp;pero realmente no puedo determinar cuál de las causas enumeradas es el problema en mi caso. No uso ningún enlace.

Lo que probé hasta ahora: jugué con la configuración de id explícitamente, es decir, rodeé a mi componente, pasé los contadores de bucle como ID al componente, etc. sin éxito. Creo que el problema no se puede resolver dentro de mi componente. La única solución que encontré fue hacer una copia física de mycomponent y referirme a esa copia en mi anotherForm (de modo que editItemDlg y anotherDlg no usen los mismos componentes).

Cualquier ayuda es apreciada