code: public int indexOf(int ch, int fromIndex)
    {
  
      int max = m_start + m_length;
      FastStringBuffer fsb = fsb();
  
      if (fromIndex < 0)
      {
        fromIndex = 0;
      }
      else if (fromIndex >= m_length)
      {
  
        // Note: fromIndex might be near -1>>>1.
        return -1;
      }
  
      for (int i = m_start + fromIndex; i < max; i++)
      {
        if (fsb.charAt(i) == ch)
        {
          return i - m_start;
        }
      }
  
      return -1;
    }
docs: Returns the index within this string of the first occurrence of the
  specified character, starting the search at the specified index.
  <p>
  If a character with value <code>ch</code> occurs in the character
  sequence represented by this <code>String</code> object at an index
  no smaller than <code>fromIndex</code>, then the index of the first
  such occurrence is returned--that is, the smallest value <i>k</i>
  such that:
  <blockquote><pre>
  (this.charAt(<i>k</i>) == ch) && (<i>k</i> >= fromIndex)
  </pre></blockquote>
  is true. If no such character occurs in this string at or after
  position <code>fromIndex</code>, then <code>-1</code> is returned.
  <p>
  There is no restriction on the value of <code>fromIndex</code>. If it
  is negative, it has the same effect as if it were zero: this entire
  string may be searched. If it is greater than the length of this
  string, it has the same effect as if it were equal to the length of
  this string: <code>-1</code> is returned.
  
  @param   ch          a character.
  @param   fromIndex   the index to start the search from.
  @return  the index of the first occurrence of the character in the
  character sequence represented by this object that is greater
  than or equal to <code>fromIndex</code>, or <code>-1</code>
  if the character does not occur.