The comment doesn't match the behavior here.  Might help to call out the nil is acceptable since I think the intent was to allow a copy of an existing set or nil for a new empty one?