1919import static com .code_intelligence .jazzer .mutation .mutator .collection .ChunkMutations .MutationAction .pickRandomMutationAction ;
2020import static com .code_intelligence .jazzer .mutation .support .Preconditions .require ;
2121import static com .code_intelligence .jazzer .mutation .support .PropertyConstraintSupport .propagatePropertyConstraints ;
22+ import static com .code_intelligence .jazzer .mutation .support .TypeSupport .extractRawClass ;
2223import static java .lang .Math .min ;
2324import static java .lang .String .format ;
2425
3536import java .lang .reflect .AnnotatedArrayType ;
3637import java .lang .reflect .AnnotatedType ;
3738import java .lang .reflect .Array ;
39+ import java .lang .reflect .Type ;
3840import java .util .Arrays ;
3941import java .util .Optional ;
4042import java .util .function .Predicate ;
@@ -53,12 +55,16 @@ public Optional<SerializingMutator<?>> tryCreate(
5355
5456 AnnotatedType elementType = ((AnnotatedArrayType ) type ).getAnnotatedGenericComponentType ();
5557 AnnotatedType propagatedElementType = propagatePropertyConstraints (type , elementType );
56- Class <?> propagatedElementClazz = (Class <?>) propagatedElementType .getType ();
57- return Optional .of (propagatedElementType )
58- .flatMap (factory ::tryCreate )
59- .map (
60- elementMutator ->
61- new ArrayMutator <>(elementMutator , propagatedElementClazz , minLength , maxLength ));
58+ Type rawType = propagatedElementType .getType ();
59+ return extractRawClass (rawType )
60+ .flatMap (
61+ propagatedElementClass ->
62+ Optional .of (propagatedElementType )
63+ .flatMap (factory ::tryCreate )
64+ .map (
65+ elementMutator ->
66+ new ArrayMutator <>(
67+ elementMutator , propagatedElementClass , minLength , maxLength )));
6268 }
6369
6470 enum CrossOverAction {
0 commit comments