anchor.diff:  [source,java]
   ----
   public class MyMapper extends MapReduceBase implements Mapper {
  -	@Override
  -	public void map(Object key, Object value, OutputCollector output, Reporter reporter) throws IOException {
  -	   // create the MapWritable object
  -	   MapWritable doc = new MapWritable()
  -	   ...
  -	   // write the result to the output collector
  -	   // one can pass whatever value to the key; EsOutputFormat ignores it
  -	   output.collect(NullWritable.get(), map);
  -	}}
  + @Override
  + public void map(Object key, Object value, OutputCollector output, Reporter reporter)
  +        throws IOException {
  +   // create the MapWritable object
  +   MapWritable doc = new MapWritable();
  +   ...
  +   // write the result to the output collector
  +   // one can pass whatever value to the key; EsOutputFormat ignores it
  +   output.collect(NullWritable.get(), map);
  + }}
   ----
   
   [float]
  
positive.code: [source,java]
  ----
  public class SomeMapper extends Mapper {
      @Override
      protected void map(Object key, Object value, Context context) throws IOException, InterruptedException {
  	   Text docId = (Text) key;
  	   MapWritable doc = (MapWritable) value;
  	   ...
  	}}
  ----
  
  [[type-conversion-writable]]
  
negative.code: 
  A `Mapper` using `EsInputFormat` might look as follows:
  
  [source,java]
  ----
  public class MyMapper extends MapReduceBase implements Mapper {
   @Override
   public void map(Object key, Object value, OutputCollector output, Reporter reporter) 
          throws IOException {
     Text docId = (Text) key;
     MapWritable doc = (MapWritable) value;
     ...
   }}
  ----
  NOTE: Feel free to use Java 5 generics to avoid the cast above. For clarity and readability, the examples in this chapter
  do not include generics.
  