/** Test method for {@link JavadocBlockParserUtil#fetchMethod(JavadocScanner, java.util.Set)}. */
 @Test
 public void testFetchMethod() {
   {
     DefaultJavadocScanner scanner = string("String#length(){");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNotNull(elem);
     assertEquals("String", elem.getDeclaringType().getName().asString());
     assertEquals("length", elem.getName().asString());
     assertEquals(0, elem.getParameters().size());
     assertEquals(LEFT_BRACE, scanner.lookahead(0).getKind());
   }
   {
     DefaultJavadocScanner scanner = string("#length(){");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNotNull(elem);
     assertNull(elem.getDeclaringType());
     assertEquals("length", elem.getName().asString());
     assertEquals(0, elem.getParameters().size());
     assertEquals(LEFT_BRACE, scanner.lookahead(0).getKind());
   }
   {
     DefaultJavadocScanner scanner = string("Math#abs(int)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNotNull(elem);
     assertEquals("Math", elem.getDeclaringType().getName().asString());
     assertEquals("abs", elem.getName().asString());
     assertEquals(1, elem.getParameters().size());
     {
       IrDocMethodParameter param = elem.getParameters().get(0);
       assertEquals(IrDocElementKind.BASIC_TYPE, param.getType().getKind());
       assertEquals(IrBasicTypeKind.INT, ((IrDocBasicType) param.getType()).getTypeKind());
       assertNull(param.getName());
     }
     assertEquals(EOF, scanner.lookahead(0).getKind());
   }
   {
     DefaultJavadocScanner scanner = string("Math#abs(int number)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNotNull(elem);
     assertEquals("Math", elem.getDeclaringType().getName().asString());
     assertEquals("abs", elem.getName().asString());
     assertEquals(1, elem.getParameters().size());
     {
       IrDocMethodParameter param = elem.getParameters().get(0);
       assertEquals(IrDocElementKind.BASIC_TYPE, param.getType().getKind());
       assertEquals(IrBasicTypeKind.INT, ((IrDocBasicType) param.getType()).getTypeKind());
       assertFalse(param.isVariableArity());
       assertNotNull(param.getName());
       assertEquals("number", param.getName().getIdentifier());
     }
     assertEquals(EOF, scanner.lookahead(0).getKind());
   }
   {
     DefaultJavadocScanner scanner = string("Arrays#asList(Object...)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNotNull(elem);
     assertEquals("Arrays", elem.getDeclaringType().getName().asString());
     assertEquals("asList", elem.getName().asString());
     assertEquals(1, elem.getParameters().size());
     {
       IrDocMethodParameter param = elem.getParameters().get(0);
       assertEquals(IrDocElementKind.NAMED_TYPE, param.getType().getKind());
       assertEquals("Object", ((IrDocNamedType) param.getType()).getName().asString());
       assertTrue(param.isVariableArity());
       assertNull(param.getName());
     }
     assertEquals(EOF, scanner.lookahead(0).getKind());
   }
   {
     DefaultJavadocScanner scanner = string("Arrays#asList(Object...elems)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNotNull(elem);
     assertEquals("Arrays", elem.getDeclaringType().getName().asString());
     assertEquals("asList", elem.getName().asString());
     assertEquals(1, elem.getParameters().size());
     {
       IrDocMethodParameter param = elem.getParameters().get(0);
       assertEquals(IrDocElementKind.NAMED_TYPE, param.getType().getKind());
       assertEquals("Object", ((IrDocNamedType) param.getType()).getName().asString());
       assertTrue(param.isVariableArity());
       assertNotNull(param.getName());
       assertEquals("elems", param.getName().getIdentifier());
     }
     assertEquals(EOF, scanner.lookahead(0).getKind());
   }
   {
     DefaultJavadocScanner scanner = string("Math#max(int, int)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNotNull(elem);
     assertEquals("Math", elem.getDeclaringType().getName().asString());
     assertEquals("max", elem.getName().asString());
     assertEquals(2, elem.getParameters().size());
     {
       IrDocMethodParameter param = elem.getParameters().get(0);
       assertEquals(IrDocElementKind.BASIC_TYPE, param.getType().getKind());
       assertEquals(IrBasicTypeKind.INT, ((IrDocBasicType) param.getType()).getTypeKind());
       assertFalse(param.isVariableArity());
       assertNull(param.getName());
     }
     {
       IrDocMethodParameter param = elem.getParameters().get(1);
       assertEquals(IrDocElementKind.BASIC_TYPE, param.getType().getKind());
       assertEquals(IrBasicTypeKind.INT, ((IrDocBasicType) param.getType()).getTypeKind());
       assertFalse(param.isVariableArity());
       assertNull(param.getName());
     }
     assertEquals(EOF, scanner.lookahead(0).getKind());
   }
   {
     DefaultJavadocScanner scanner = string("Math#max(int a, int b)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNotNull(elem);
     assertEquals("Math", elem.getDeclaringType().getName().asString());
     assertEquals("max", elem.getName().asString());
     assertEquals(2, elem.getParameters().size());
     {
       IrDocMethodParameter param = elem.getParameters().get(0);
       assertEquals(IrDocElementKind.BASIC_TYPE, param.getType().getKind());
       assertEquals(IrBasicTypeKind.INT, ((IrDocBasicType) param.getType()).getTypeKind());
       assertFalse(param.isVariableArity());
       assertNotNull(param.getName());
       assertEquals("a", param.getName().getIdentifier());
     }
     {
       IrDocMethodParameter param = elem.getParameters().get(1);
       assertEquals(IrDocElementKind.BASIC_TYPE, param.getType().getKind());
       assertEquals(IrBasicTypeKind.INT, ((IrDocBasicType) param.getType()).getTypeKind());
       assertFalse(param.isVariableArity());
       assertNotNull(param.getName());
       assertEquals("b", param.getName().getIdentifier());
     }
     assertEquals(EOF, scanner.lookahead(0).getKind());
   }
   {
     DefaultJavadocScanner scanner = string("/Math#max(int a, int b)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNull(elem);
     assertEquals(0, scanner.getIndex());
   }
   {
     DefaultJavadocScanner scanner = string("Math+#max(int a, int b)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNull(elem);
     assertEquals(0, scanner.getIndex());
   }
   {
     DefaultJavadocScanner scanner = string("Math#+max(int a, int b)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNull(elem);
     assertEquals(0, scanner.getIndex());
   }
   {
     DefaultJavadocScanner scanner = string("Math#max+(int a, int b)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNull(elem);
     assertEquals(0, scanner.getIndex());
   }
   {
     DefaultJavadocScanner scanner = string("Math#max(+int a, int b)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNull(elem);
     assertEquals(0, scanner.getIndex());
   }
   {
     DefaultJavadocScanner scanner = string("Math#max(int *a, int b)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNull(elem);
     assertEquals(0, scanner.getIndex());
   }
   {
     DefaultJavadocScanner scanner = string("Math#max(int a+, int b)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNull(elem);
     assertEquals(0, scanner.getIndex());
   }
   {
     DefaultJavadocScanner scanner = string("Math#max(int a int b)");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNull(elem);
     assertEquals(0, scanner.getIndex());
   }
   {
     DefaultJavadocScanner scanner = string("Math#max(int a, int b");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, null);
     assertNull(elem);
     assertEquals(0, scanner.getIndex());
   }
   {
     DefaultJavadocScanner scanner = string("String#length(){");
     IrDocMethod elem = JavadocBlockParserUtil.fetchMethod(scanner, EnumSet.of(WHITE_SPACES));
     assertNull(elem);
     assertEquals(0, scanner.getIndex());
   }
 }