class ImmutableAuthorizationSubject implements AuthorizationSubject {

    public static ImmutableAuthorizationSubject of(final CharSequence id) {
        final String argumentName = "identifier of the new authorization subject";
        checkNotNull(id, argumentName);
        checkNotEmpty(id, argumentName);

        return new ImmutableAuthorizationSubject(id);
    }

    private  ImmutableAuthorizationSubject(final CharSequence theId);

}