private static void addStrings(SolrInputDocument doc, Collection<String> set, SolrName field) {
    if (set == null || set.size() == 0) {
      return;
    }

    for (String s : set) {
      add(doc, field, s);
    }
  }
  // metadata refs use DcsFile ids to reference DcsFile content  //But why is this not getting
  // indexed or is it?
  private static void addMetadataRefSet(
      SolrInputDocument doc, Collection<DcsMetadataRef> set, SolrName field, ArchiveStore store)
      throws IOException {
    if (set == null || set.size() == 0) {
      return;
    }

    addRefSet(doc, set, field);
  }
  private static void addFixitySet(SolrInputDocument doc, Collection<DcsFixity> set) {
    if (set == null || set.size() == 0) {
      return;
    }

    for (DcsFixity fix : set) {
      setadd(doc, FixityField.ALGORITHM, fix.getAlgorithm());
      setadd(doc, FixityField.VALUE, fix.getValue());
    }
  }
  private static void addCreatorSet(SolrInputDocument doc, Collection<SeadPerson> set) {
    if (set == null || set.size() == 0) {
      return;
    }

    for (SeadPerson creator : set) {
      setadd(doc, SeadSolrField.CreatorField.CREATORID, creator.getId());
      setadd(doc, SeadSolrField.CreatorField.CREATORIDTYPE, creator.getIdType());
      setadd(doc, SeadSolrField.CreatorField.NAME, creator.getName());
    }
  }
  private static void addRefSet(
      SolrInputDocument doc, Collection<? extends DcsEntityReference> set, SolrName field) {

    if (set == null || set.size() == 0) {
      return;
    }

    for (DcsEntityReference ref : set) {
      setadd(doc, field, ref.getRef());
    }
  }
  private static void addResourceIdentifierSet(
      SolrInputDocument doc, Collection<DcsResourceIdentifier> set) {
    if (set == null || set.size() == 0) {
      return;
    }

    for (DcsResourceIdentifier id : set) {
      setadd(doc, ResourceIdentifierField.AUTHORITY, id.getAuthorityId());
      setadd(doc, ResourceIdentifierField.TYPE, id.getTypeId());
      setadd(doc, ResourceIdentifierField.VALUE, id.getIdValue());
    }
  }
  private static void addFormatSet(SolrInputDocument doc, Collection<DcsFormat> set) {
    if (set == null || set.size() == 0) {
      return;
    }

    for (DcsFormat fmt : set) {
      setadd(doc, FormatField.NAME, fmt.getName());
      setadd(doc, FormatField.FORMAT, fmt.getFormat());
      setadd(doc, FormatField.SCHEMA, fmt.getSchemeUri());
      setadd(doc, FormatField.VERSION, fmt.getVersion());
    }
  }
  private static void addRelationSet(SolrInputDocument doc, Collection<DcsRelation> set) {
    if (set == null || set.size() == 0) {
      return;
    }

    for (DcsRelation rel : set) {
      setadd(doc, RelationField.TARGET, rel.getRef() == null ? null : rel.getRef().getRef());
      setadd(doc, RelationField.RELATION, rel.getRelUri());

      if (rel.getRef() != null && rel.getRelUri() != null) {
        doc.addField(RELATION_FIELD_PREFIX + rel.getRelUri(), rel.getRef());
      }
    }
  }
  private static void addMetadataSet(SolrInputDocument doc, Collection<DcsMetadata> set)
      throws IOException {
    if (set == null || set.size() == 0) {
      return;
    }

    for (DcsMetadata md : set) {
      setadd(doc, MetadataField.SCHEMA, md.getSchemaUri());
      setadd(doc, MetadataField.TEXT, md.getMetadata());

      if (md.getMetadata() == null) {
        continue;
      }

      try {
        Reader in = new StringReader(md.getMetadata());
        addXml(doc, "ext_", MetadataField.SEARCH_TEXT.solrName(), new InputSource(in));
        in.close();

        // Index FGDC
        String metadata = md.getMetadata();

        if (metadata.contains("<metadata>")) // fgdc - change the check
        {
          FgdcMapping mapping = new FgdcMapping();
          Map<Enum, String> fgdcElements = mapping.map(metadata);

          Iterator it = fgdcElements.entrySet().iterator();
          while (it.hasNext()) {
            Map.Entry pair = (Map.Entry) it.next();
            add(doc, (SeadSolrField.FgdcField) pair.getKey(), pair.getValue());
            it.remove(); // avoids a ConcurrentModificationException
          }
        }

        in.close();
      } catch (SAXException e) {
        throw new IOException(e);
      }
    }
  }