code: public int doStartTag() throws JspException
      {
  
          Tag parentTag = getParent();
          while (!(parentTag instanceof Select)) {
              parentTag = parentTag.getParent();
          }
  
          if (parentTag == null) {
              //throw error
              String s = Bundle.getString("Tags_SelectOptionNoSelect");
              registerTagError(s, null);
              return SKIP_BODY;
          }
  
          Select parentSelect = (Select) parentTag;
          boolean repeating = parentSelect.isRepeater();
  
          // if we find an option inside a select and it's not a repeating select report the error
          if ((parentSelect.getOptionsDataSource() != null) && !repeating) {
              String s = Bundle.getString("Tags_SelectOptionParentHasOptionsDataSource");
              _hasError = true;
              parentSelect.registerTagError(s, null);
              return SKIP_BODY;
          }
  
          // if we are an option inside a repeating select, we must specify the type of repeater we are.
          if (repeating && _repeatingType == null) {
              String s = Bundle.getString("Tags_SelectRepeatingOptionType");
              _hasError = true;
              parentSelect.registerTagError(s, null);
              return SKIP_BODY;
          }
  
          if (repeating && !isRenderable(parentSelect)) {
              return SKIP_BODY;
          }
  
          // Do nothing until doEndTag() is called
          return EVAL_BODY_BUFFERED;
      }
docs: Process the start of this tag.
  @throws JspException if a JSP exception has occurred