code: function buildConcepts(item) {
    var concepts = [];
    if (!defined(item.procedures) || !defined(item.observableProperties)) {
      throw new DeveloperError(
        "Both `procedures` and `observableProperties` arrays must be defined on the catalog item."
      );
    }
    if (item.procedures.length > 1) {
      var concept = new DisplayVariablesConcept(item.proceduresName);
      concept.id = "procedures"; // must match the key of item['procedures']
      concept.requireSomeActive = true;
      concept.items = item.procedures.map((value, index) => {
        return new VariableConcept(value.title || value.identifier, {
          parent: concept,
          id: value.identifier, // used in the SOS request to identify the procedure.
          active: index === item.initialProcedureIndex
        });
      });
      concepts.push(concept);
      item._previousProcedureIdentifier =
        concept.items[item.initialProcedureIndex].id;
      item._loadingProcedureIdentifier =
        concept.items[item.initialProcedureIndex].id;
    }
    if (item.observableProperties.length > 1) {
      concept = new DisplayVariablesConcept(item.observablePropertiesName);
      concept.id = "observableProperties";
      concept.requireSomeActive = true;
      concept.items = item.observableProperties.map((value, index) => {
        return new VariableConcept(value.title || value.identifier, {
          parent: concept,
          id: value.identifier, // used in the SOS request to identify the procedure.
          active: index === item.initialObservablePropertyIndex
        });
      });
      concepts.push(concept);
      item._previousObservablePropertyIdentifier =
        concept.items[item.initialObservablePropertyIndex].id;
      item._loadingObservablePropertyIdentifier =
        concept.items[item.initialObservablePropertyIndex].id;
    }
    return concepts;
  }
docs: Returns an array of procedure and/or observableProperty concepts,
  and sets item._previousProcedureIdentifier and _previousObservablePropertyIdentifier.
  @private