class_docstr: Very lightweight graph wrapper which caches neighborhoods as list.
  
  This dict subclass uses the __missing__ functionality to query graphs for
  their neighborhoods, and store the result as a list.  This is used to avoid
  the performance penalty incurred by subgraph views.
code: def __missing__(self, v):
      Gv = self[v] = list(self.G[v])
      return Gv
  
imports: from collections import Counter, defaultdict
  from itertools import combinations, product
  from math import inf
  import networkx
  from networkx.utils import not_implemented_for, pairwise
label_desc: Use image node_id 2 for calling the _NeighborhoodCache obj's underlying member method code with example usage: obj.__missing__(v) and returns: Gv