class_docstr: This is an abstract class that contains main helper functionality for
  search methods.
  
  A search method is a strategy for applying transformations until the
  goal is met or the search is exhausted.
docstr: Ensures access to necessary functions, then calls
  ``perform_search``
code: def __call__(self, initial_result):
      """Ensures access to necessary functions, then calls
      ``perform_search``"""
      if not hasattr(self, "get_transformations"):
          raise AttributeError(
              "Search Method must have access to get_transformations method"
          )
      if not hasattr(self, "get_goal_results"):
          raise AttributeError(
              "Search Method must have access to get_goal_results method"
          )
      if not hasattr(self, "filter_transformations"):
          raise AttributeError(
              "Search Method must have access to filter_transformations method"
          )
  
      result = self.perform_search(initial_result)
      # ensure that the number of queries for this GoalFunctionResult is up-to-date
      result.num_queries = self.goal_function.num_queries
      return result
  
file_path: TextAttack/textattack/search_methods/search_method.py
imports: from abc import ABC, abstractmethod
  from textattack.shared.utils import ReprMixin
label_desc: Use image node_id 1 for calling the SearchMethod obj's underlying member method code with example usage: obj.__call__(initial_result) and returns: result