Object hierarchyValue = parentObj;
DeepHierarchyElement[] hierarchy = getDeepFieldHierarchy(srcObj, srcDeepIndexHintContainer);
int size = hierarchy.length;
for (int i = 0; i < size; i++) {
DeepHierarchyElement hierarchyElement = hierarchy[i];
PropertyDescriptor pd = hierarchyElement.getPropDescriptor();
// If any fields in the deep hierarchy are indexed, get actual value within the collection at the specified index
if (hierarchyElement.getIndex() > -1) {
hierarchyValue = MappingUtils.getIndexedValue(ReflectionUtils.invoke(pd.getReadMethod(), hierarchyValue, null),
hierarchyElement.getIndex());
} else {
hierarchyValue = ReflectionUtils.invoke(pd.getReadMethod(), parentObj, null);
}
parentObj = hierarchyValue;
if (hierarchyValue == null) {
break;
}