code: public static void setAllOptional(Object targetBean, Object sourceBean)
      {
          Class<?> sourceClass = targetBean.getClass();
          Class<?> targetClass = targetBean.getClass();
          List<String> propertyNames = 
              getMutablePropertyNamesOptional(targetClass);
          for (String propertyName : propertyNames)
          {
              Method readMethod = 
                  getReadMethodOptional(sourceClass, propertyName);
              Method writeMethod = 
                  getWriteMethodOptional(targetClass, propertyName);
              if (readMethod != null && writeMethod != null)
              {
                  try
                  {
                      Object value = readMethod.invoke(sourceBean);
                      Methods.invokeOptional(writeMethod, targetBean, value);
                  } 
                  catch (IllegalArgumentException e)
                  {
                      // Ignore
                  } 
                  catch (IllegalAccessException e)
                  {
                      // Ignore
                  } 
                  catch (InvocationTargetException e)
                  {
                      // Ignore
                  }
                  catch (SecurityException e)
                  {
                      // Ignore
                  }
              }
          }
      }
docs: Set all properties of the target bean to the values obtained
  from the source bean. <br>
  <br>
  This method will extract all properties of the target bean class
  using {@link #getMutablePropertyNamesOptional(Class)}. For each
  property, the corresponding read-method of the source bean class
  will be called to obtain the value. This value will then be passed
  to the target bean by calling the write-method for the property.<br>
  <br>
  Any checked exception that may be thrown internally will silently
  be ignored.
  
  @param targetBean The target bean
  @param sourceBean The source bean