private static Set<DcsManifestationFile> getManifestationFileSet(SolrDocument doc) {
    Set<DcsManifestationFile> set = new HashSet<DcsManifestationFile>();

    String[] filerefs = setgetAll(doc, ManifestationFileField.FILE_REF);
    String[] paths = setgetAll(doc, ManifestationFileField.PATH);

    for (int i = 0; i < filerefs.length; i++) {
      DcsManifestationFile mf = new DcsManifestationFile();

      if (filerefs[i] != null) {
        mf.setRef(new DcsFileRef(filerefs[i]));
      }

      if (paths[i] != null && paths[i].length() > 0) {
        mf.setPath(paths[i]);
      }

      // <doc
      // field="mf_rel_urn:dataconservancy.org:file/4326762_hasRelationship">urn:dataconservancy.org:rel/isMetadataFor</doc>
      // <doc
      // field="mf_rel_urn:dataconservancy.org:file/4326762_relatedTo">http://dataconservancy.org/dcs/entity/article_du</doc>

      String[] relations =
          setgetAll(
              doc,
              ManifestationFileField.DYNAMIC_MF_REL_PREFIX.solrName()
                  + filerefs[i]
                  + "_"
                  + RelationField.RELATION.solrName());

      String[] targets =
          setgetAll(
              doc,
              ManifestationFileField.DYNAMIC_MF_REL_PREFIX.solrName()
                  + filerefs[i]
                  + "_"
                  + RelationField.TARGET.solrName());

      for (int j = 0; j < relations.length; j++) {
        if (relations[j] != null && targets[j] != null) {
          DcsRelation rel = new DcsRelation(relations[j], targets[j]);
          mf.addRel(rel);
        }
      }

      set.add(mf);
    }

    return set;
  }