code: def duplicate_nodes(self):
          
          # if there is no geometry we can have no duplicate nodes
          if len(self.geometry) == 0:
              return []
  
          # geometry name : md5 of mesh
          mesh_hash = {k: int(m.identifier_md5, 16)
                       for k, m in self.geometry.items()}
  
          # the name of nodes in the scene graph with geometry
          node_names = np.array(self.graph.nodes_geometry)
          # the geometry names for each node in the same order
          node_geom = np.array([self.graph[i][1] for i in node_names])
  
          # the mesh md5 for each node in the same order
          node_hash = np.array([mesh_hash[v] for v in node_geom])
  
          # indexes of identical hashes
          node_groups = grouping.group(node_hash)
  
          # sequence of node names, where each sublist has identical geometry
          duplicates = [np.sort(node_names[g]).tolist() for g in node_groups]
          return duplicates
docs: Return a sequence of node keys of identical meshes.
  
          Will combine meshes duplicated by copying in space with different keys in
          self.geometry, as well as meshes repeated by self.nodes.
  
          Returns
          -----------
          duplicates: (m) sequence of keys to self.nodes that represent
                       identical geometry