 
 ;; Point type definition
 ;; It is a Type and not a record because it has some special rules that don't follow normal
-;; equality semantics.
-;; - A point on a pole is equal to another point on the pole regardless of longitude
-;; - -180 and 180 degrees longitude are equivalent.
+;; equality semantics. This implements enough functions and protocols to simulate a record.
 ;; Also Point maintains cached versions of lon and lat in radians. It keeps those values consistent
 ;; when creating a new point with a different lon or lat in assoc.
 (deftype Point

(ns cmr.spatial.point
  (:require [cmr.spatial.math :refer :all]
            [primitive-math]
            [clojure.pprint]

    [this]
    (pr-str this))

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; Protocols implemented to simulate a clojure Record.

  clojure.lang.IPersistentMap
  (assoc
    [_ k v]
