class ObjectToJsonConverter {

    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);
    }

    public  ObjectToJsonConverter(StringToObjectConverter pStringToObjectConverter,
                                 Extractor... pSimplifyHandlers);

}