@Override
 public void serialize(
     final DataObjectSerializerRegistry reg,
     final DataObject obj,
     final BindingStreamEventWriter stream)
     throws IOException {
   if (obj instanceof Augmentable<?>) {
     final Map<Class<? extends Augmentation<?>>, Augmentation<?>> augmentations;
     if (reg instanceof AugmentationReader) {
       augmentations = ((AugmentationReader) reg).getAugmentations(obj);
     } else if (Proxy.isProxyClass(obj.getClass())) {
       augmentations = getFromProxy(obj);
     } else {
       augmentations = BindingReflections.getAugmentations((Augmentable<?>) obj);
     }
     for (final Entry<Class<? extends Augmentation<?>>, Augmentation<?>> aug :
         augmentations.entrySet()) {
       emitAugmentation(aug.getKey(), aug.getValue(), stream, reg);
     }
   }
 }