code: def find(self, gridpos, find_string, flags, search_result=True):
          
  
          findfunc = self.grid.code_array.findnextmatch
  
          if "DOWN" in flags:
              if gridpos[0] < self.grid.code_array.shape[0]:
                  gridpos[0] += 1
              elif gridpos[1] < self.grid.code_array.shape[1]:
                  gridpos[1] += 1
              elif gridpos[2] < self.grid.code_array.shape[2]:
                  gridpos[2] += 1
              else:
                  gridpos = (0, 0, 0)
          elif "UP" in flags:
              if gridpos[0] > 0:
                  gridpos[0] -= 1
              elif gridpos[1] > 0:
                  gridpos[1] -= 1
              elif gridpos[2] > 0:
                  gridpos[2] -= 1
              else:
                  gridpos = [dim - 1 for dim in self.grid.code_array.shape]
  
          return findfunc(tuple(gridpos), find_string, flags, search_result)
docs: Return next position of event_find_string in MainGrid
  
          Parameters:
          -----------
          gridpos: 3-tuple of Integer
          \tPosition at which the search starts
          find_string: String
          \tString to find in grid
          flags: List of strings
          \tSearch flag out of
          \t["UP" xor "DOWN", "WHOLE_WORD", "MATCH_CASE", "REG_EXP"]
          search_result: Bool, defaults to True
          \tIf True then the search includes the result string (slower)