class_docstr: The graph is a Node: [List of nodes]
  Where each item in the list of nodes can also have a node with a list of nodes
  
  The result is that we can keep track of edges, while also keeping it small
  
  To calculate current, we push the entire graph to A*
  
  And it calculates the next node to choose, as well as increasing the size
  of the graph with values
  
  We're using a heap, meaning the element at [0] is always the smallest element
  
  So we choose that and return it.
  
  
  The current A* implementation has an end, we simply do not let it end as LC will make it
  end far before it reaches Searcher again.
  
  Current is the start position, so if we say we always start at the start of the graph it'll
  go through the entire graph
  
  graph = {
          Node: [
              {Node :
              {
                  node
                  }
              }
              ]
          }
  
  For encodings we just do them straight out
  
  The last value of parents from abstract
docstr: Finds the best decryption module
docstr_tok: ["Finds","the","best","decryption","module"]
code: def findBestNode(self, nodes):
      """Finds the best decryption module"""
      return next(iter(nodes))
  
file_path: Ciphey/ciphey/basemods/Searchers/imperfection.py
imports: import heapq
label_desc: Use image node_id 2 for calling the Imperfection obj's underlying member method code with example usage: obj.findBestNode(nodes) and returns: next