Not sure about this pattern of `Object tag1, Object... tags` rather than just `Object... tags`. The latter allows one to pass in an array, while the former would require the user to pull apart their array to remove the first element.
Note it's called `addTags` so no conflict with `addTag` method above.
Also very minor: I prefer `Object... tags` rather than `Object ...tags` because the `...` is part of the type, rather than part of the parameter name (same argument as for `(String args[])` which always looked crazy to me)`.