code: function (p) {
      var _this = this;
      // brute force search
      var hit = null;
      try {
        morpheus.DendrogramUtil.dfs(this.tree.rootNode, function (node) {
          var xy = _this.toPix(node);
          if (Math.abs(xy[0] - p.x) < 4 && Math.abs(xy[1] - p.y) < 4) {
            hit = node;
            throw 'break';
          }
          return hit === null;
        });
      }
      catch (x) {
        // break of out dfs
      }
      return hit;
    }
docs: getNode : function(p) { var x = p.x; var y = p.y; var leafIndex = this.positions.getIndex(x, true); if (leafIndex >= 0 && leafIndex < leafNodeIds.length) { leafid = leafNodeIds[leafIndex]; } else { return null; } var n = leafNodes.get(leafid); if (n != null) { while (!n.isRoot()) { var parent = n.getParent(); getNodePosition(parent, p); if (Math.abs(p.x - x) < 4 && Math.abs(p.y - y) < 4) { return parent; } n = parent; } } return null; },