@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); } } }