package com.puppycrawl.tools.checkstyle.grammar;

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.lang.reflect.InvocationTargetException;
import java.util.List;

import javax.annotation.Nullable;

import org.junit.Assert;

import com.google.common.reflect.Invokable;

public class InputAstRegressionAnnotatedMethodVariableArityParam {
    void varargLong(@I String @L [] @K [] @J ... vararg2) { }
    @SuppressWarnings("unused")
    void withUpperBound(List<? extends int[][]> list) {}
    private static <T> @Nullable T invoke(Invokable<?, ? extends T> factory, List<?> args)
                throws InvocationTargetException, IllegalAccessException {
            return null;
        }
}
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
@interface I {}

@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
@interface J {}

@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
@interface K {}

@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
@interface L {}
