docs: protected boolean mutatesTo(Object o1, Object o2)
  	{
  		if (BeansUtils.declaredEquals(o1.getClass()))
  		{
  			return o1.equals(o2);
  		}
  		if (o1 instanceof Collection<?>)
  		{
  			Collection<?> c1 = (Collection<?>) o1;
  			Collection<?> c2 = (Collection<?>) o2;
  			return c1.size() == c2.size() && c1.containsAll(c2);
  		}
  		if (o1 instanceof Map<?, ?>)
  		{
  			Map<?, ?> m1 = (Map<?, ?>) o1;
  			Map<?, ?> m2 = (Map<?, ?>) o2;
  			return m1.size() == m2.size() && m1.entrySet().containsAll(m2.entrySet());
  		}
  		return super.mutatesTo(o1, o2);
  	}