code: public void addStatementAnnotation(Integer statementIndex,
              Set<AnnotationPair> annotationPairs) {
          if (statementIndex == null) {
              throw new InvalidArgument("statementIndex is null");
          }
  
          if (annotationPairs == null) {
              throw new InvalidArgument("annotationValueDefinitionPairs is null.");
          }
  
          if (annotationPairs.isEmpty()) {
              return;
          }
  
          Set<AnnotationPair> annotationValueDefinitions =
                  statementAnnotationPairsIndex
                          .get(statementIndex);
          if (annotationValueDefinitions == null) {
              statementAnnotationPairsIndex.put(statementIndex,
                      annotationPairs);
          } else {
              annotationValueDefinitions.addAll(annotationPairs);
          }
      }
docs: Adds a mapping of {@code statementIndex} to
  {@code annotationValueDefinitionPairs} in the
  {@code statementAnnotationIndex} map. A {@code statementIndex} will not
  be indexed if the {@code annotationValueDefinitionPairs} collection is
  empty.
  
  @param statementIndex {@link Integer}, the statement index as the key,
  must not be null
  @param annotationPairs {@link List} of {@code Integer[]}, the annotation
  value / definition index, which cannot be null, and if empty the
  {@code statementIndex} will not be indexed
  @throws InvalidArgument Thrown if {@code statementIndex} or
  {@code annotationValueDefinitionPairs} is null