class ApplicationId implements Comparable<ApplicationId> {

    public static ApplicationId fromSerializedForm(String idString) {
        String[] parts = idString.split(":");
        if (parts.length < 3)
            throw new IllegalArgumentException("Application ids must be on the form tenant:application:instance, but was " + idString);

        return new Builder().tenant(parts[0]).applicationName(parts[1]).instanceName(parts[2]).build();
    }

    public  ApplicationId(ApplicationIdConfig config);
    private  ApplicationId(TenantName tenant, ApplicationName applicationName, InstanceName instanceName);

}