function traverse (val) {
  _traverse(val, seenObjects);
  seenObjects.clear();
}
Recursively traverse an object to evoke all converted
getters, so that every nested property inside the object
is collected as a "deep" dependency.