1   package com.puppycrawl.tools.checkstyle.grammar;
2   import java.lang.reflect.ParameterizedType;
3   import java.lang.reflect.WildcardType;
4   import java.util.List;
5   
6   public class InputMultiDimensionalArraysInGenerics {
7   
8       @SuppressWarnings("unused")
9       void withUpperBound(List<? extends int[][]> list) {}
10  
11      @SuppressWarnings("unused")
12      void withLowerBound(List<? super String[][]> list) {}
13  
14      @SuppressWarnings("unused")
15      void withLowerBound2(List<? super String[][][]> list) {}
16  
17      static WildcardType getWildcardType(String methodName) throws Exception {
18        ParameterizedType parameterType = (ParameterizedType)
19            WildcardType.class
20                .getDeclaredMethod(methodName, List.class)
21                .getGenericParameterTypes()[0];
22        return (WildcardType) parameterType.getActualTypeArguments()[0];
23      }
24    
25  }