   writing it to an XML format and parsing it back. Conversion from a UMM record into metadata
   can be lossy if some fields are not supported by that format"
   (:require [cmr.umm-spec.models.common :as cmn]))
+
+(defmulti convert-internal
+  (fn [umm-coll metadata-format]
+    metadata-format))
+
+(defmethod convert-internal :default
+  [umm-coll _]
+  umm-coll)
 
 ;;; Utililty Functions
 


;; ECHO 10

(def not-implemented-fields
  "This is a list of required but not implemented fields."
  #{:DataLineage :MetadataStandard :Platform :ProcessingLevel :RelatedUrl
    :ResponsibleOrganization :ScienceKeyword :SpatialExtent})

(defn- dissoc-not-implemented-fields
  "Removes not implemented fields since they can't be used for comparison"
  [record]
  (reduce (fn [r field]
            (assoc r field nil))
          record
          not-implemented-fields))


(defn- expected-echo10
  "This manipulates the expected parsed UMM record based on lossy conversion in ECHO10."
  [umm-coll]
  ;; ECHO10 returns entry id as a combination of short name and version. It generates short name
  ;; from entry id. So the expected entry id when going from umm->echo10->umm is the original
  ;; entry id concatenated with the version id.

  (update-in t1 [:RangeDateTime] concat (:RangeDateTime t2)))

(defn split-temporals
  "Returns a seq of temporal extents with a new extent for each value under key
  k (e.g. :RangeDateTime) in each source temporal extent."
  [k temporal-extents]
  (reduce (fn [result extent]
            (if-let [values (get extent k)]
