anchor.diff:  
   [source,java,prettyprint]
   ----
  -public class MathOperationConverter 
  -    implements ConfigurableCustomConverter {
  -  
  -  public Object convert(Object destinationFieldValue, 
  -                        Object sourceFieldValue,
  -                        Class destinationClass, 
  -                        Class sourceClass, String param) {
  -    Integer source = (Integer) sourceFieldValue;
  -    Integer destination = (Integer) destinationFieldValue;
  -    if ("+".equals(param)) {
  -      return destination.intValue + source.intValue();
  -    }
  -    if ("-".equals(param)) {
  -      return destination.intValue - source.intValue();
  -    }
  -  }
  -  
  +import org.dozer.ConfigurableCustomConverter;
  +import org.dozer.MappingException;
  +
  +public class MathOperationConverter implements ConfigurableCustomConverter {
  +
  +    private String parameter;
  +
  +    @Override
  +    public void setParameter(String parameter) {
  +        this.parameter = parameter;
  +    }
  +
  +    @Override
  +    public Object convert(Object existingDestinationFieldValue, Object sourceFieldValue, Class<?> destinationClass, Class<?> sourceClass) {
  +        Integer source = (Integer)sourceFieldValue;
  +        Integer destination = (Integer)existingDestinationFieldValue;
  +
  +        if ("+".equals(parameter)) {
  +            return destination.intValue + source.intValue();
  +        }
  +
  +        if ("-".equals(parameter)) {
  +            return destination.intValue - source.intValue();
  +        }
  +
  +        throw new MappingException("Converter MathOperationConverter "
  +                                   + "used incorrectly. Arguments passed in were:"
  +                                   + destination
  +                                   + ", "
  +                                   + source
  +                                   + " and "
  +                                   + parameter);
  +    }
   }
   ----
   
  
positive.code: 
  [source,java,prettyprint]
  ----
  public class NewDozerConverter 
      extends DozerConverter<String, Boolean> {
  
    public NewDozerConverter() {
      super(String.class, Boolean.class);
    }
  
    public Boolean convertTo(String source, Boolean destination) {
      if ("yes".equals(source)) {
        return Boolean.TRUE;
      } else if ("no".equals(source)) {
        return Boolean.FALSE;
      }
      throw new IllegalStateException("Unknown value!");
    }
  
    public String convertFrom(Boolean source, String destination) {
      if (Boolean.TRUE.equals(source)) {
        return "yes";
      } else if (Boolean.FALSE.equals(source)) {
        return "no";
      }
      throw new IllegalStateException("Unknown value!");
    }
  
  }
  ----
  
  
negative.code: 
  [source,java,prettyprint]
  ----
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  
  import org.dozer.DozerConverter;
  import org.dozer.Mapper;
  import org.dozer.MapperAware;
  
  public class Converter extends DozerConverter<List, Map> implements MapperAware {
  
      private Mapper mapper;
  
      public Converter() {
          super(List.class, Map.class);
      }
  
      @Override
      public void setMapper(Mapper mapper) {
          this.mapper = mapper;
      }
  
      @Override
      public Map convertTo(List source, Map destination) {
          Map originalToMapped = new HashMap();
          for (Source item : source) {
              Target mappedItem = mapper.map(item, Target.class);
  
              originalToMapped.put(item, mappedItem);
          }
          return originalToMapped;
      }
  
      @Override
      public List convertFrom(Map source, List destination) {
          throw new IllegalStateException("Not implemented");
      }
  }
  ----
  