diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/BeanUtils.java b/common/source/java/ch/systemsx/cisd/common/utilities/BeanUtils.java
index e3d60310fd93b98b5b6326ecad97469cbc731843..8b8aca066caa06eeda84607296330815e124eee2 100644
--- a/common/source/java/ch/systemsx/cisd/common/utilities/BeanUtils.java
+++ b/common/source/java/ch/systemsx/cisd/common/utilities/BeanUtils.java
@@ -772,7 +772,7 @@ public final class BeanUtils
         }
         final Class<T> parameterType = (Class<T>) setter.getParameterTypes()[0];
         if (parameterType.isPrimitive() || immutableTypes.contains(parameterType)
-                || parameterType.isEnum())
+                || parameterType.isEnum() || oldBean.getClass().isAssignableFrom(parameterType))
         {
             return (T) oldBean;
         } else
@@ -936,7 +936,7 @@ public final class BeanUtils
             final List<PropertyDescriptor> descriptors =
                     new ArrayList<PropertyDescriptor>(Arrays.asList(Introspector.getBeanInfo(clazz)
                             .getPropertyDescriptors()));
-            for (final Iterator<PropertyDescriptor> iter = descriptors.iterator(); iter.hasNext(); )
+            for (final Iterator<PropertyDescriptor> iter = descriptors.iterator(); iter.hasNext();)
             {
                 final PropertyDescriptor descriptor = iter.next();
                 // If no write method, remove it. For instance 'class' property does not have any