code: def _check_contraint(self, edge1, edge2):
          
          full_node = set([edge1.L, edge1.R, edge2.L, edge2.R])
          full_node.update(edge1.D)
          full_node.update(edge2.D)
          return len(full_node) == (self.level + 1)
docs: Check if two edges satisfy vine constraint.
  
          Args:
              :param edge1: edge object representing edge1
              :param edge2: edge object representing edge2
              :type edge1: Edge object
              :type edge2: Edge object
  
          Returns:
              Boolean True if the two edges satisfy vine constraints