code: @Override
      public String getKeyType() throws DataSourceReadException {
          initializeIfNeeded();
          String result = null;
          DataSourceBackend b = null;
          for (DataSourceBackend backend : getBackends()) {
              result = backend.getKeyType();
              b = backend;
              break;
          }
          assert result != null : "no key type found in " + b.getClass() + "!";
          return result;
      }
docs: Returns a string representing the type of keys in this data source (e.g.,
  patient, case).
  
  @return a {@link String}, guaranteed not <code>null</code>.
  @throws TerminologyAdaptorInitializationException if the terminology
  adaptor could not be initialized.
  @throws SchemaAdaptorInitializationException if the schema adaptor could
  not be initialized.