anchor.diff:  private Map<String, String> emails;
   ----
   
  -[source,java]
  -----
  -// no type parameter
  -@ConstraintsApplyTo(WRAPPED_VALUE)
  -@Email
  -private String email;
  -----
  -
  -===== Invalid examples
  -
  -* No most specific extractor can be found unambiguously:
  -
  -[source,java]
  -----
  -public interface CachedValue<V> {
  -    V getCachedValue();
  -}
  -----
  -
  -[source,java]
  -----
  -public interface RealValue<V> {
  -    V getRealValue();
  -}
  -----
  -
  -[source,java]
  -----
  -public class CachableValue<V> implements CachedValue<V>, RealValue<V> { ... }
  -----
  -
  -[source,java]
  -----
  -public class CachedValueExtractor implements ValueExtractor<CachedValue<@ExtractedValue ?>> { ... }
  -----
  -
  -[source,java]
  -----
  -public class RealValueExtractor implements ValueExtractor<RealValue<@ExtractedValue ?>> { ... }
  -----
  -
  -[source,java]
  -----
  -private CachableValue<@Min(1) Integer> foo;
  -----
  -
  -Validation of `foo` will fail, as none of the two matching extractors is more specific than the other one.
  -An extractor for `CachableValue` must be added, resolving the ambiguity.
  -
   ==== XML based configuration
   
   TODO
  
positive.code: }
  ----
  
  If this extractor was the single most-specific extractor for `StringProperty`, the `@Email` constraint above would automatically be applied to the wrapped string value.
  
  In rare cases it may happen that a constraint should be applied to the wrapped value although an extractor exists.
  In this case the `ConstraintsApplyTo` annotation can be given on the element itself to prevent the unwrapping:
  
negative.code:     T2 getSecond();
  }
  ----
  +
  [source,java]
  ----
  public class TupleFirstExtractor implements ValueExtractor<Tuple<@ExtractedValue ?, ?>> {
  