docs: @Override
      public void processDecodes(FacesContext context)
      {
          if (context == null)
          {
              throw new NullPointerException("context");
          }
          try
          {
              setCachedFacesContext(context);
              pushComponentToEL(context, this);
              if (!isRendered())
              {
                  return;
              }
          }
          finally
          {
              setCachedFacesContext(null);
              popComponentFromEL(context);
          }
          super.processDecodes(context);
          try
          {
              setCachedFacesContext(context);
              pushComponentToEL(context, this);
              if (isImmediate())
              {
                  //Pre validation event dispatch for component
                  context.getApplication().publishEvent(context,  PreValidateEvent.class, getClass(), this);
                  try
                  {
                      validate(context);
                  }
                  catch (RuntimeException e)
                  {
                      context.renderResponse();
                      throw e;
                  }
                  finally
                  {
                      context.getApplication().publishEvent(context,  PostValidateEvent.class, getClass(), this);
                  }
                  if (!isValid())
                  {
                      context.renderResponse();
                  }
              }
          }
          finally
          {
              setCachedFacesContext(null);
              popComponentFromEL(context);
          }
      }