code: public int doEndTag()
              throws JspException {
          /*
             note, this does not report errors because the <repeater> tag itself does
             the error reporting
           */
          if(hasErrors()) {
              /* bug: this doesn't report errors */
              localRelease();
              return EVAL_PAGE;
          }
  
          int ret = EVAL_PAGE;
          try {
              int state = _repeater.getRenderState();
              ret = renderEndTag(state);
          }
          catch(Exception e) {
              String msg = Bundle.getString("Tags_RepeaterComponent_endTagError", new Object[]{getTagName(), e.toString()});
              registerTagError(msg, e);
              reportErrors();
              ret = EVAL_PAGE;
          }
  
          localRelease();
          return ret;
      }
docs: Ends a tag's lifecycle.  This call is a wrapper around the @see renderEndTag(int) call
  that allows a tag directly contained in a repeating tag to act based on the state
  of the parent.
  
  @return EVAL_PAGE
  @throws JspException if an error that occurred that could not be reported to the page