search -rc (p_p_tree_node -w result, p_tree_node node, ((p_tree_node) byte) -a is_desired)                                                       
        if (# (result, node, is_desired))
{
  walk (p_tree_node node)                        
  {
    search (result, node, is_desired) : (node);
  }

  with (node)
  {
    if (->is_desired ())
    {
      *result = _;   
    }

    if (!*result) walk (->left);
    if (!*result) walk (->right);
  }
}

# search (ptr result, node, is_desired)
{
  select ()
  {
    case result, node, is_desired: return .;
  }
  else
  {
    return ERR_PARAMETER;
  }
}
