in lib/src/editor.dart [445:487]
YamlNode _traverse(Iterable<Object?> path,
{bool checkAlias = false, YamlNode Function()? orElse}) {
if (path.isEmpty) return _contents;
var currentNode = _contents;
final pathList = path.toList();
for (var i = 0; i < pathList.length; i++) {
final keyOrIndex = pathList[i];
if (checkAlias && _aliases.contains(currentNode)) {
throw AliasError(path, currentNode);
}
if (currentNode is YamlList) {
final list = currentNode;
if (!isValidIndex(keyOrIndex, list.length)) {
return _pathErrorOrElse(path, path.take(i + 1), list, orElse);
}
currentNode = list.nodes[keyOrIndex as int];
} else if (currentNode is YamlMap) {
final map = currentNode;
if (!containsKey(map, keyOrIndex)) {
return _pathErrorOrElse(path, path.take(i + 1), map, orElse);
}
final keyNode = getKeyNode(map, keyOrIndex);
if (checkAlias) {
if (_aliases.contains(keyNode)) throw AliasError(path, keyNode);
}
currentNode = map.nodes[keyNode]!;
} else {
return _pathErrorOrElse(path, path.take(i + 1), currentNode, orElse);
}
}
if (checkAlias) _assertNoChildAlias(path, currentNode);
return currentNode;
}