public boolean findLParenthesis() throws OffsetLimitReachedException {
      Token t = first();
      while (t != null) {
        switch (t.getType()) {
          case ObjCPreprocessor.tSPACE:
          case ObjCPreprocessor.tNOSPACE:
          case Lexer.tNEWLINE:
          case ObjCPreprocessor.tSCOPE_MARKER:
            break;
          case IToken.tLPAREN:
            return true;
          default:
            return false;
        }
        t = (Token) t.getNext();
      }

      if (fLexer != null) {
        t = fLexer.currentToken();
        while (t.getType() == Lexer.tNEWLINE) {
          t = fLexer.nextToken();
        }
        return t.getType() == IToken.tLPAREN;
      }
      return false;
    }
 public Token fetchFirst() throws OffsetLimitReachedException {
   Token t = removeFirst();
   if (t == null && fLexer != null) {
     t = fLexer.currentToken();
     if (t.getType() != IToken.tEND_OF_INPUT) {
       fEndOffset = t.getEndOffset();
       fLexer.nextToken();
     }
   }
   return t;
 }