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.

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