   ;; Records
 
   (scan
-    [this opts]
+    [^Table this opts]
     ; TODO: apply lexicoder
     (->>
       (patch-seq

    (if (contains? info-keys k)
      (throw (IllegalArgumentException.
               (str "Cannot remove table info field " k)))
      (let [root' (not-empty (dissoc root-data k))]
        (if (= root-data root')
          this
          (Table.



  (get-records
    [^Table this id-keys opts]
    ; TODO: apply lexicoder
    (let [id-keys (set id-keys)
          patch-map (.patch-data this) ; TODO: merge ::patch
