protected final <S extends ImmutableTerm> void registerTerm(S term) {
		checkStatus(Status.INITIALIZING);
		checkInitializationPrecondition(this.nameOrdinal.containsKey(term.name()),"Term '%s' has not been reserved",term.name());
		checkInitializationPrecondition(term.ordinal()>=0 && term.ordinal()<=this.ordinal,"Invalid ordinal '%d' for reserved name '%s'",term.ordinal(),term.name());
		this.terms.put(term.ordinal(),this.termClass.cast(term));
	}
protected final <S extends ImmutableTerm> void registerTerm(S term) {
		checkStatus(Status.INITIALIZING);
		checkInitializationPrecondition(this.nameOrdinal.containsKey(term.name()),"Term '%s' has not been reserved",term.name());
		checkInitializationPrecondition(term.ordinal()>=0 && term.ordinal()<=this.ordinal,"Invalid ordinal '%d' for reserved name '%s'",term.ordinal(),term.name());
		this.terms.put(term.ordinal(),this.termClass.cast(term));
	}
protected final < S extends ImmutableTerm > void registerTerm ( S term ) { checkStatus ( Status . INITIALIZING ) ; checkInitializationPrecondition ( this . nameOrdinal . containsKey ( term . name ( ) ) , "Term '%s' has not been reserved" , term . name ( ) ) ; checkInitializationPrecondition ( term . ordinal ( ) >= 0 && term . ordinal ( ) <= this . ordinal , "Invalid ordinal '%d' for reserved name '%s'" , term . ordinal ( ) , term . name ( ) ) ; this . terms . put ( term . ordinal ( ) , this . termClass . cast ( term ) ) ; }
Upon reservation, the method enables registering the properly built
immutable term instance.

@param term
the term to be registered.
@throws IllegalArgumentException
if the specified term instance cannot be registered, either
because the ordinal is invalid or because another term
with the same name has already been registered.
@throws IllegalStateException
if the vocabulary has been already initialized.
Upon reservation the method enables registering the properly built immutable term instance .