in lib/src/editor.dart [584:613]
YamlNode _deepModify(YamlNode tree, Iterable<Object?> path,
Iterable<Object?> subPath, YamlNode expectedNode) {
RangeError.checkValueInInterval(subPath.length, 0, path.length);
if (path.length == subPath.length) return expectedNode;
final keyOrIndex = path.elementAt(subPath.length);
if (tree is YamlList) {
if (!isValidIndex(keyOrIndex, tree.length)) {
throw PathError(path, subPath, tree);
}
return wrapAsYamlNode([...tree.nodes]..[keyOrIndex as int] = _deepModify(
tree.nodes[keyOrIndex],
path,
path.take(subPath.length + 1),
expectedNode));
}
if (tree is YamlMap) {
return updatedYamlMap(
tree,
(nodes) => nodes[keyOrIndex] = _deepModify(nodes[keyOrIndex], path,
path.take(subPath.length + 1), expectedNode));
}
/// Should not ever reach here.
throw PathError(path, subPath, tree);
}