code: def neighbours_pattern(element):
      
      # check if there are any neighbours
      if not element.parent:
          return []
  
      parent = element.parent
  
      # filter only visible tags/neighbours
      neighbours = filter(
          lambda x: x.isTag() and not x.isEndTag() or x.getContent().strip() \
                    or x is element,
          parent.childs
      )
      if len(neighbours) <= 1:
          return []
  
      output = []
      element_index = neighbours.index(element)
  
      # pick left neighbour
      if element_index >= 1:
          output.append(
              _neighbour_to_path_call(
                  "left",
                  neighbours[element_index - 1],
                  element
              )
          )
  
      # pick right neighbour
      if element_index + 1 < len(neighbours):
          output.append(
              _neighbour_to_path_call(
                  "right",
                  neighbours[element_index + 1],
                  element
              )
          )
  
      return output
docs: Look for negihbours of the `element`, return proper :class:`PathCall`.
  
      Args:
          element (obj): HTMLElement instance of the object you are looking for.
  
      Returns:
          list: List of :class:`PathCall` instances.