@Override
 public void key(String key) throws IOException {
   DataSchema newSchema = null;
   if (_currentSchema != null) {
     switch (_currentSchema.getType()) {
       case RECORD:
         RecordDataSchema recordSchema = (RecordDataSchema) _currentSchema;
         RecordDataSchema.Field field = recordSchema.getField(key);
         if (field != null) {
           newSchema = field.getType();
         }
         break;
       case UNION:
         UnionDataSchema unionSchema = (UnionDataSchema) _currentSchema;
         newSchema = unionSchema.getType(key);
         break;
       case MAP:
         MapDataSchema mapSchema = (MapDataSchema) _currentSchema;
         newSchema = mapSchema.getValues();
         break;
     }
   }
   _pendingSchema = newSchema;
   super.key(key);
 }