firstMaybe f (x : l) =
    case f x of
      Nothing -> firstMaybe f l
      y -> y

{- | Searches all ancestor nodes of the current node and also the current node
for a node matching the given predicate -}
firstMaybe f (x : l) =
    case f x of
      Nothing -> firstMaybe f l
      y -> y

{- | Searches all ancestor nodes of the current node and also the current node
for a node matching the given predicate -}
firstMaybe f (x : l) =
    case f x of
      Nothing -> firstMaybe f l
      y -> y

{- | Searches all ancestor nodes of the current node and also the current node
for a node matching the given predicate -}