# annotated varargs ellipsis class C { void m(String @A ... xs) {} } ==> Program( ClassDeclaration( class, Definition, ClassBody( MethodDeclaration( void, Definition, FormalParameters( SpreadParameter(TypeName, MarkerAnnotation(Identifier), VariableDeclarator(Definition))), Block)))) # multiple annotations before a varargs ellipsis class C { void m(String @A @B(1) ... xs) {} } ==> Program( ClassDeclaration( class, Definition, ClassBody( MethodDeclaration( void, Definition, FormalParameters( SpreadParameter( TypeName, MarkerAnnotation(Identifier), Annotation(Identifier, AnnotationArgumentList(IntegerLiteral)), VariableDeclarator(Definition))), Block)))) # annotated array varargs class C { void m(final String[] @A ... xs) {} } ==> Program( ClassDeclaration( class, Definition, ClassBody( MethodDeclaration( void, Definition, FormalParameters( SpreadParameter( Modifiers(final), ArrayType(TypeName, Dimension), MarkerAnnotation(Identifier), VariableDeclarator(Definition))), Block))))