 (defmacro select
   "Navigates to and returns a sequence of all the elements specified by the path.
    This macro will attempt to do inline factoring and caching of the path, falling
-   back to compiling the path on every invocation it it's not possible to 
+   back to compiling the path on every invocation if it's not possible to 
    factor/cache the path."
   [apath structure]
   `(i/compiled-select* (path ~apath) ~structure))

(defmacro select-one
  "Like select, but returns either one element or nil. Throws exception if multiple elements found.
   This macro will attempt to do inline factoring and caching of the path, falling
   back to compiling the path on every invocation it it's not possible to 
   factor/cache the path."
  [apath structure]
  `(i/compiled-select-one* (path ~apath) ~structure))

(defmacro select-first
  "Returns first element found.
   This macro will attempt to do inline factoring and caching of the path, falling
   back to compiling the path on every invocation if it's not possible to 
   factor/cache the path."
  [apath structure]
  `(i/compiled-select-first* (path ~apath) ~structure))
