/**
   * Adds an instance if it is not present
   *
   * @param prop the HL7Properties
   * @param c the Class of the desired type
   * @return the new HL7DataTree
   */
  public HL7DataTree addIfNotPresent(final HL7Properties prop, final Class<? extends HL7Data> c) {
    if (!containsChild(c)) {
      return addChild(UtilHL7.getInstance(prop, c));
    }

    return null;
  }
  /**
   * Adds an instance at the given position if it is not present there
   *
   * @param prop the HL7Properties
   * @param i the desired position
   * @param c the Class of the desired type
   * @return the new HL7DataTree
   */
  public HL7DataTree addIfNotAtPosition(
      final HL7Properties prop, final int i, final Class<? extends HL7Data> c) {
    if (!isChildDesiredType(i, c)) {
      return addChild(i, UtilHL7.getInstance(prop, c));
    }

    return null;
  }