public class Test { // no javadoc public void ok0(){ } /* no javadoc */ public void ok1(){ } /** * no tags */ public void ok2(){ } /** * @param p1 correctly spelled */ public void ok3(int p1){ } /** * @param type parameter */ public T ok4(){ return null; } /** * @param several type * @param parameters */ public T ok5(V p){ return null; } /** * @param several type * @param parameters * @param p mixed with normal parameters */ public T ok6(V p){ return null; } /** * weird parameter name * @param * @param V */ private void ok7(V V){ V = null; } /** * not a param * param something */ protected void ok8(){ } /** * param param * @param param */ protected void ok9(int...param){ } /** * @param prameter typo */ public void problem1(int parameter){ } /** * @param Parameter capitalization */ public void problem2(int parameter){ } /** * @param parameter unmatched */ public void problem3(){ } /** * @param someOtherParameter matched * @param parameter unmatched */ public void problem4(int someOtherParameter){ } /** * @param unmatched type parameter */ private T problem5(){ return null; } /** * @param matched type parameter * @param

unmatched type parameter * @param n unmatched normal parameter */ private T problem6(V p){ return null; } /** * param with immediate newline * @param */ protected void problem7(){ } /** * param without a value (followed by blanks) * @param */ protected void problem8(){ } class SomeClass { /** * @param i exists * @param k does not */ SomeClass(int i, int j) {} } /** * @param exists * @param T wrong syntax * @param does not exist */ class GenericClass {} /** * @param exists * @param T wrong syntax * @param does not exist */ interface GenericInterface {} /** * @param i exists * @param k does not */ static record SomeRecord(int i, int j) {} /** * @param exists * @param does not * @param i exists * @param k does not */ static record GenericRecord(int i, int j) {} }