code: public void addValueClassification(
              ValueClassification valueClassification) {
          if (valueClassification == null) {
              throw new IllegalArgumentException(
                      "valueClassification cannot be null");
          }
          if (!classificationMatrix.containsKey(valueClassification.value)) {
              classificationMatrix.put(valueClassification.value, new ArrayList<>());
          }
          lowLevelIds.add(valueClassification.lladId);
          classificationMatrix.get(valueClassification.value).add(
                  new ClassificationMatrixValue(valueClassification.lladId,
                  NominalValue.getInstance(valueClassification.lladValue)));
          this.valueClassifications.add(valueClassification);
          recalculateChildren();
      }
docs: Adds a value classification for the abstraction. If a classification of
  the provided name doesn't exist, then it is created. The value definition
  name must be one of the values applicable to the low-level abstraction
  whose ID is also passed in.
  
  @param id the name of the value definition
  @param lowLevelAbstractionId the name of the low-level abstraction to add
  to the classification
  @param lowLevelValueDefName the name of the low-level abstraction's value