code: func (node *blockNode) Ancestor(height int32) *blockNode {
  	if height < 0 || height > node.height {
  		return nil
  	}
  
  	n := node
  	for ; n != nil && n.height != height; n = n.parent {
  		// Intentionally left blank
  	}
  
  	return n
  }
docs: // Ancestor returns the ancestor block node at the provided height by following
  // the chain backwards from this node.  The returned block will be nil when a
  // height is requested that is after the height of the passed node or is less
  // than zero.
  //
  // This function is safe for concurrent access.