We're working on a bugtracking system.
Our design has a BugReport class that represents the filing of a bug of some Project in the system. BugReports have tags, representing the state/progress of the BugReport. Possible tags are e.g. New, Closed, Duplicate, Under Review, ...
Tags have no responsibility other than representing the progress of the BugReport. Except for one special type of tag, Duplicate. Duplicate means that the BugReport is actually a duplicate of another BugReport in the system. When a user tags a BugReport as Duplicate, he should indicate of which BugReport the BugReport is a Duplicate of.
I'm having trouble to design this part. As said before, most tags only have the functionality of representing the progress of the BugReport. Except for one (maybe more in the future) which also has the functionality to point to another BugReport.
A simple enum would've sufficed if not for the Duplicate part, but I have no idea how to provide the extra functionality of Duplicate?