@Documented @Retention(value=RUNTIME) @Target(value={CONSTRUCTOR,METHOD}) public @interface SafeVarargs
 In addition to the usage restrictions imposed by its @Target meta-annotation,
 compilers are required to implement additional usage restrictions on this annotation type; it is
 a compile-time error if a method or constructor declaration is annotated with a
 @SafeVarargs annotation, and either:
 
static nor final.
 Compilers are encouraged to issue warnings when this annotation type is applied to a method or constructor declaration where:
Object, and String. (The unchecked warnings this annotation type suppresses
 already do not occur for a reifiable element type.)
 
 
 @SafeVarargs
 // Not actually safe!
 static void m(List<String>... stringLists) {
        Object[] array = stringLists;
        List<Integer> tmpList = Arrays.asList(42);
        array[0] = tmpList; // Semantically invalid, but compiles without warnings
        String s = stringLists[0].get(0); // Oh no, ClassCastException at runtime!
 }
 
 
 leads to a ClassCastException at runtime.
 Future versions of the platform may mandate compiler errors for such unsafe operations.