docs: def is_equal(self, other):
          """
          The objects must be the same
            - Same members (if enumerated)
            - Or same structure (if not enumerated)
  
          If the merge does not produce any new information (or contradiction)
          then these are equal.
          """
          print type(self.prototype), type(other.prototype)
          if not self.prototype.is_equal(other.prototype):
              print "Different prototypes"
              return False
          if self.exclude != other.exclude:
              print "Different excludes"
              return False
          if self.include != other.include:
              print "Different includes"
              return False
          return True