The contract of this class is to not fail on duplicates. It is to pick the last one. This is in line with the current behaviour of Entity. If I where doing this without having an existing implementation to match, I would be more tempted to do this check and throw an exception.