code: public Object setInnerValue(Object pOuterObject, Object pNewValue, List<String> pPathParts)
              throws AttributeNotFoundException, IllegalAccessException, InvocationTargetException {
          String lastPathElement = pPathParts.remove(pPathParts.size()-1);
          Stack<String> extraStack = EscapeUtil.reversePath(pPathParts);
  
          // Get the object pointed to do with path-1
          // We are using no limits here, since a path must have been given (see above), and hence we should
          // be save anyway.
          Object inner = extractObjectWithContext(pOuterObject, extraStack, JsonConvertOptions.DEFAULT, false);
  
          // Set the attribute pointed to by the path elements
          // (depending of the parent object's type)
          return setObjectValue(inner, lastPathElement, pNewValue);
      }
docs: Set an inner value of a complex object. A given path must point to the attribute/index to set within the outer object.
  
  
  @param pOuterObject the object to dive in
  @param pNewValue the value to set
  @param pPathParts the path within the outer object. This object will be modified and be a modifiable list.
  @return the old value
  
  @throws AttributeNotFoundException
  @throws IllegalAccessException
  @throws InvocationTargetException