@SuppressWarnings("unchecked")
 @Override
 public PluginVisitor<A> setAnnotation(final Annotation annotation) {
   final Annotation a = Assert.requireNonNull(annotation, "No annotation was provided");
   if (this.clazz.isInstance(a)) {
     this.annotation = (A) a;
   }
   return this;
 }
 @Override
 public PluginVisitor<A> setStrSubstitutor(final StrSubstitutor substitutor) {
   this.substitutor = Assert.requireNonNull(substitutor, "No StrSubstitutor was provided");
   return this;
 }
 @Override
 public PluginVisitor<A> setConversionType(final Class<?> conversionType) {
   this.conversionType =
       Assert.requireNonNull(conversionType, "No conversion type class was provided");
   return this;
 }