Prior to this commit, BeanUtils.copyProperties() ignored generic type information when comparing candidate source and target property types. This commit reworks the implementation of BeanUtils.copyProperties() so that generic type information is taken into account when copying properties. See gh-24281