code: public int addAnnotationValue(int annotationDefinitionId,
              String annotationValue) {
          if (annotationValue == null) {
              throw new InvalidArgument("annotationValue is null.");
          }
  
          TableAnnotationValue tav = new TableAnnotationValue(
                  annotationDefinitionId, annotationValue);
  
          int nextIndex = annotationValues.size();
          if (annotationValues.add(tav)) {
              valueIndex.put(tav, nextIndex);
              indexValue.put(nextIndex, tav);
              return nextIndex;
          }
  
          return valueIndex.get(tav);
      }
docs: Adds an annotation value to the {@code annotationValues} set. The
  insertion index is captured by {@code valueIndex}.
  
  @param annotationValue {@link String}, the annotation value to add, which
  cannot be null
  @return {@code int}, the index of the added annotation value, which must
  be &gt;= 0.
  @throws InvalidArgument Thrown if the {@code annotationValue} argument is
  null