public virtual object Search(System.IComparable key)
        {
            int  position     = GetPositionOfKey(key);
            bool keyIsHere    = position > 0;
            int  realPosition = -1;

            if (keyIsHere)
            {
                realPosition = position - 1;
                object value = GetValueAt(realPosition);
                return(value);
            }
            else
            {
                if (IsLeaf())
                {
                    // key is not here and node is leaf
                    return(null);
                }
            }
            realPosition = -position - 1;
            NeoDatis.Btree.IBTreeNodeOneValuePerKey node = (NeoDatis.Btree.IBTreeNodeOneValuePerKey
                                                            )GetChildAt(realPosition, true);
            return(node.Search(key));
        }
 public virtual object Search(System.IComparable key)
 {
     NeoDatis.Btree.IBTreeNodeOneValuePerKey theRoot = (NeoDatis.Btree.IBTreeNodeOneValuePerKey
                                                        )GetRoot();
     return(theRoot.Search(key));
 }