anchor.diff:  (= (kind (entity-map [:Foo/Bar :X/d3] {:a 1})) :X)
   ----
   
  -===# autogenned ids
  +== [[autogen]] autogenned ids
   
   Use a partial ("improper") keychain to have the datastore autogen Id
   values.  All but the last links in the vector must be namespaced;
  
positive.code: (def em2 (entity-map! [:A/B :C/D Foo] m)) ;; long keychains ok too
  ----
  
  ===# field types
  
  The value part of an entity-map is just a map.  The datastore
  restricts the permissible value types; see  link:https://cloud.google.com/appengine/docs/java/datastore/entities#Java_Properties_and_value_types[Properties and value types].
  
negative.code: registered for this thread.` (the test env seems to timeout); if so,
  just run `user=> (ds-reset)`.
  
  == [[testing]]testing
  
  See the link:test/clojure/migae[tests] for lots of examples of how to use
  the library.  Be **be forewarned**, the test cases are in flux; some
  of them are outdated, and the api is changing.
  
  == [[types]]types
  
  * `migae.datastore.PersistentEntityMap` - migae representation of underlying `com.google.appengine.api.datastore.Entity`.  Implements IPersistentCollection, IPersistentMap, IMapEntry, etc.  See link:doc/Entities.adoc[Entities].
  * `migae.datastore.Keychain`  - migae representation of underlying `com.google.appengine.api.datastore.Key`.  A vector of Clojure keywords.  See link:doc/Keychains.adoc[Keychains].  (**Not yet implemented**)
  
  These are represented in migae as `entity-map` and `keychain`, respectively.
  
  == [[ctors]]construction
  
  We have three ways to construct PersistentEntityMap objects:
  
  