code: function put(path, val) {
    var pos = splitPath(path).reduce(function (t, segment) {
      if (!t[segment]) { t[segment] = {} }
      return t[segment]
    }, this)
    pos['@'] = val;
    return this;
  }
docs: (this: Trie, path: Path, val: Value) => Trie