private void setListValue(List<Object> list, Object value) {
int index = getIndex();
while (list.size() <= index) {
list.add(null);
}
if (NodeType.MAP.equals(valueType)) {
@SuppressWarnings("unchecked")
Map<String, Object> map = (Map<String, Object>) list.get(index);
if (map == null) {
map = new LinkedHashMap<>();
list.set(index, map);
}
setMapValue(map, value);
} else if (NodeType.ARRAY.equals(valueType)) {
@SuppressWarnings("unchecked")
List<Object> nestedList = (List<Object>) list.get(index);
if (nestedList == null) {
nestedList = new ArrayList<>();
list.set(index, nestedList);
}
setListValue(nestedList, value);
} else {
list.set(index, value);
}
}