public Field field(String field) {
    HtmlInput input = form.getInputByNameOrId(field);
    if (input != null) {
      if (logger.isDebugEnabled()) {
        logger.debug("Field is an input: " + input);
      }
      return new HtmlUnitField(this, input);
    }
    HtmlTextArea textArea = form.getTextAreaByNameOrId(field);
    if (textArea != null) {
      if (logger.isDebugEnabled()) {
        logger.debug("Field is a textarea: " + input);
      }
      return new HtmlUnitTextArea(this, textArea);
    }

    if (logger.isDebugEnabled()) {
      logger.debug("Trying to find a generic input");
    }
    HtmlElement element = form.getElementByIdOrDie(field);
    if (element instanceof HtmlTextArea) {
      return new HtmlUnitTextArea(this, (HtmlTextArea) element);
    }
    return new HtmlUnitField(this, (HtmlInput) element);
  }