code: public void processUpdates(FacesContext context) {
  
          if (context == null) {
              throw new NullPointerException();
          }
          if (!isRendered()) {
              return;
          }
  
          pushComponentToEL(context, this);
          preUpdate(context);
          iterate(context, PhaseId.UPDATE_MODEL_VALUES);
          popComponentFromEL(context);
          // This is not a EditableValueHolder, so no further processing is required
  
      }
docs: <p>Override the default {@link UIComponentBase#processUpdates}
  processing to perform the following steps.</p>
  <ul>
  <li>If the <code>rendered</code> property of this {@link UIComponent}
  is <code>false</code>, skip further processing.</li>
  <li>Set the current <code>rowIndex</code> to -1.</li>
  <li>Call the <code>processUpdates()</code> method of all facets
  of this {@link UIData}, in the order determined
  by a call to <code>getFacets().keySet().iterator()</code>.</li>
  <li>Call the <code>processUpdates()</code> method of all facets
  of the {@link UIColumn} children of this {@link UIData}.</li>
  <li>Iterate over the set of rows that were included when this
  component was rendered (i.e. those defined by the <code>first</code>
  and <code>rows</code> properties), performing the following
  processing for each row:
  <ul>
  <li>Set the current <code>rowIndex</code> to the appropriate
  value for this row.</li>
  <li>If <code>isRowAvailable()</code> returns <code>true</code>,
  iterate over the children components of each {@link UIColumn}
  child of this {@link UIData} component, calling the
  <code>processUpdates()</code> method for each such child.</li>
  </ul></li>
  <li>Set the current <code>rowIndex</code> to -1.</li>
  </ul>
  
  @param context {@link FacesContext} for the current request
  
  @throws NullPointerException if <code>context</code> is <code>null</code>