code: /*
  JavadocMethod
  allowedAnnotations = (default)Override
  validateThrows = (default)false
  accessModifiers = (default)public, protected, package, private
  allowMissingParamTags = (default)false
  allowMissingReturnTag = (default)false
  tokens = (default)METHOD_DEF, CTOR_DEF, ANNOTATION_FIELD_DEF, COMPACT_CTOR_DEF
  
  
  */
  
  package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocmethod;
  
  /**
   * @param <A> A type param
   * @param <B1> Another type param
   * @param <D123> The wrong type param
   * @author Nobody
   * @version 1.0
   */
  public class InputJavadocMethodTypeParamsTags<A,B1,C456 extends Comparable> // ok
  {
      /**
       * Some explanation.
       * @param <X> A type param
       * @param <Y1> Another type param
       * @return a string
       */
      public <X, Y1> String doSomething()
      {
          return null;
      }
  
      /**
       * Some explanation.
       * @param <BB> The wrong type param
       */
      // violation 2 lines above 'Unused @param tag for '<BB>'.'
      public <Z> void doSomethingElse() // violation 'Expected @param tag for '<Z>'.'
      {
      }
  
      /**
       * Some explanation.
       * @param aAnEl A parameter
       * @param <L> A type parameter
       */
      public <L> void doSomethingElse2(L aAnEl) // ok
      {
      }
  
      /**
       * Example inner class.
       * @param <A> documented parameter
       * @param <C> extra parameter
       */
  
      public static class InnerClass<A,B> // ok
      {
      }
  
      /**
       * Some explanation.
       * @param <Z The wrong type param
       */
      // violation 2 lines above 'Unused @param tag for '<Z.'
      public <Z> void unclosedGenericParam() // violation 'Expected @param tag for '<Z>'.'
      {
      }
  }
  
  /** @param x */
  class Test {} // ok
  