public TreeRow selectUp(boolean extend) {
		TreeRow scrollTo = null;
		if (mRoot.getChildCount() > 0) {
			int count = mSelectedRows.size();
			if (extend && count > 0) {
				scrollTo = getLastSelectedRow();
				if (scrollTo == mAnchorRow) {
					scrollTo = getBeforeFirstSelectedRow();
					if (scrollTo != null) {
						select(scrollTo, true);
					}
				} else {
					deselect(scrollTo);
					scrollTo = getLastSelectedRow();
				}
			} else {
				if (count == 0) {
					scrollTo = getLastDisclosedRow();
				} else {
					scrollTo = count == 1 ? getBeforeFirstSelectedRow() : getFirstSelectedRow();
					if (scrollTo == null) {
						scrollTo = getFirstRow();
					}
				}
				if (scrollTo != null) {
					select(scrollTo, false);
				}
			}
		}
		return scrollTo;
	}