MetricRefImpl is created by metric name only using Client.getMetric() method. After this we have got a new instance with full tag names (1 to 15) and we can't add new tags but only use these.
It is better to have empty tags for MetricRefImpl and add them if there is a need.
By the way store tag name-value pairs is better in Map.
Also we should throw error if someone adds more than 15 tags.