private boolean mustSendItemsetUpdate(
     PropertyContext propertyContext, XFormsSelect1Control otherSelect1Control) {
   if (getSelectionControl().hasStaticItemset()) {
     // There is no need to send an update:
     //
     // 1. Items are static...
     // 2. ...and they have been outputted statically in the HTML page, directly or in repeat
     // template
     return false;
   } else if (isStaticReadonly()) {
     // There is no need to send an update for static readonly controls
     return false;
   } else {
     // There is a possible change
     if (XFormsSingleNodeControl.isRelevant(otherSelect1Control) != isRelevant()) {
       // Relevance changed
       // Here we decide to send an update only if we become relevant, as the client will know that
       // the
       // new state of the control is non-relevant and can handle the itemset on the client as it
       // wants.
       return isRelevant();
     } else if (!XFormsSingleNodeControl.isRelevant(this)) {
       // We were and are non-relevant, no update
       return false;
     } else {
       // If the itemsets changed, then we need to send an update
       // NOTE: This also covers the case where the control was and is non-relevant
       return !Itemset.compareItemsets(
           otherSelect1Control.getItemset(propertyContext), getItemset(propertyContext));
     }
   }
 }