             ^long ^:unsynchronized-mutable position
             ^boolean ^:unsynchronized-mutable le])
   IMikronByteBuffer
-  (take-byte* [_]
+  (-take-byte [_]
     #?(:clj  (unchecked-long (.get buffer))
        :cljs (with-delta position 1 (.readInt8 buffer position true))))
-  (put-byte* [_ value]
+  (-put-byte [_ value]
     #?(:clj  (.put buffer (unchecked-byte value))
        :cljs (with-delta position 1 (.writeInt8 buffer value position true))))
 
-  (take-short* [_]
+  (-take-short [_]
     #?(:clj  (unchecked-long (.getShort buffer))
        :cljs (with-delta position 2 (with-le le (.readInt16 buffer position true)))))
-  (put-short* [_ value]
+  (-put-short [_ value]
     #?(:clj  (.putShort buffer (unchecked-short value))
        :cljs (with-delta position 2 (with-le le (.writeInt16 buffer value position true)))))
 
-  (take-int* [_]
+  (-take-int [_]
     #?(:clj  (.getInt buffer)
        :cljs (with-delta position 4 (with-le le (.readInt32 buffer position true)))))
-  (put-int* [_ value]
+  (-put-int [_ value]
     #?(:clj  (.putInt buffer (unchecked-int value))
        :cljs (with-delta position 4 (with-le le (.writeInt32 buffer value position true)))))
 
-  (take-long* [this]
+  (-take-long [this]
     #?(:clj  (.getLong buffer)
-       :cljs (math/to (let [u (take-int* this)
-                            v (take-int* this)]
+       :cljs (math/to (let [u (-take-int this)
+                            v (-take-int this)]
                         (if le (math/from u v) (math/from v u))))))
-  (put-long* [this value]
+  (-put-long [this value]
     #?(:clj  (.putLong buffer value)
        :cljs (let [value (math/from value)
                    low   (.getLowBits value)
                    high  (.getHighBits value)]
                (if le
-                 (do (put-int* this low)  (put-int* this high))
-                 (do (put-int* this high) (put-int* this low))))))
-
-  (take-float* [_]
+                 (do (-put-int this low)  (-put-int this high))
+                 (do (-put-int this high) (-put-int this low))))))
+
+  (-take-float [_]
     #?(:clj  (double (.getFloat buffer))
        :cljs (with-delta position 4 (with-le le (.readFloat buffer position true)))))
-  (put-float* [_ value]
+  (-put-float [_ value]
     #?(:clj  (.putFloat buffer (unchecked-float value))
        :cljs (with-delta position 4 (with-le le (.writeFloat buffer value position true)))))
 
-  (take-double* [_]
+  (-take-double [_]
     #?(:clj  (.getDouble buffer)
        :cljs (with-delta position 8 (with-le le (.readDouble buffer position true)))))
-  (put-double* [_ value]
+  (-put-double [_ value]
     #?(:clj  (.putDouble buffer value)
        :cljs (with-delta position 8 (with-le le (.writeDouble buffer value position true)))))
 
-  (take-bytes* [_ n]
+  (-take-bytes [_ n]
     #?(:clj  (let [value (byte-array n)]
                (.get buffer value)
                value)

  [^MikronBuffer buffer]
  (set-le buffer (take-boolean buffer))
  {:diffed? (take-boolean buffer)})

;; Multimethod abstractions for other consumers (e.g. tests)


(defn allocate
  "Allocates a buffer with the size `size`."
  ^MikronBuffer [^long size]
  (->MikronBuffer (->MikronBitBuffer 0 0 -1) (-allocate byte-buffer-factory size)))

(defn wrap
  "Wraps a binary value `binary` with a buffer."
  ^MikronBuffer [^bytes binary]

(defn set-headers
  "Sets the headers of `buffer`."
