code: @Override
      public int indexOf(Object o) {
          if (getClass().isAssignableFrom(o.getClass())) {
              T str = $.cast(o);
              return indexOf(str);
          } else if (o instanceof CharSequence) {
              CharSequence str = (CharSequence) o;
              return indexOf(str);
          } else if (o instanceof Character) {
              Character c = (Character) o;
              return indexOf((int) c);
          } else if (o instanceof Integer) {
              Integer n = (Integer) o;
              return indexOf(n);
          }
          return -1;
      }
docs: Returns the index within this str of the first occurrence of
  the specified object. The function will check if the object is
  an instance of StrBase, String, Character or Integer, and delegate
  to the {@code indexOf(...)} override methods respectively.
  <p>If the object is not of the above types, then {@code -1} returned</p>
  @param o the object
  @return the index of the first occurrence of the object in this str