private String toStringValue(Object... objects) {
        StringBuilder b = new StringBuilder();
        boolean first = true;
        for (Object o : objects) {
            if (o != null)  {
                if (! first)
                    b.append(".");
                b.append(o);
                first = false;
            }
        }
        return b.toString();
    }
Must be called on construction after the component values are set

@throws IllegalArgumentException If the numerical components are negative
        or the qualifier string is invalid.
component/src/main/java/com/yahoo/component/VersionSpecification.java