+ $link = '';
+ break;
+ }
+ }
+ if ($link == $this->path) {
+ $link = '';
+ }
+ if ($link && levenshtein($link, $this->path) < strlen($link)/3) {
+ return $link;
+ }
+
+ // search for missing namespace (the given name is a leaf)
+ $leaf = array_shift($p);
+ $args = count($p) ? '/' . implode('/', $p) : '';
+ if (isset($leafs[$leaf]) && !is_array($leafs[$leaf]) && $leafs[$leaf] != $this->path) {
+ return $leafs[$leaf] . $args;
+ }
+ unset($val);
+ $best = null;
+ foreach ($leafs as $k=>&$path) {
+ if (is_array($path)) {
+ continue;