for (int i = (reverse) ? cells.length - 1 : 0; i >= 0
&& i < cells.length; i += (reverse) ? -1 : +1) {
CellView view = getGraphLayoutCache().getMapping(cells[i], false);
if (view != null
&& (!leafsOnly || view.isLeaf())
&& ((view.isLeaf() && view.intersects(this, r)) || (!view
.isLeaf() && view.getBounds().contains(x, y))))
return view;
}
return null;
}