/**
* Provides classes for performing value conversion between library specific values and neutral java values.
*
* <p>
* Neo4J adaptor makes use of a few libraries (specifically: Lucene, Neo4J and NextStep collection types) of which
* each has its own limitations or ways to denote some value being not set (empty). To name some, NSDictionary
* can't store <code>null</code> value (uses {@link com.webobjects.foundation.NSKeyValueCoding.Null} instead,
* Neo4J uses no value at all for <code>null</code>, Lucene doesn't support timestamps.
* </p>
*
* <p>
* To work around cross-library communication we introduce record ersatz term which is a map of EO attribute to neutral java value,
* where numbers are represented by suitable numeric classes, timestamps are represented by subclasses of {@link java.util.Date},
* <code>null</code>s are represented by <code>null</code>s and ersatz object contains information on which EO attribute values
* are EMPTY (so <code>null</code> is considered to be some value). Record ersatz are instances of {@link er.neo4jadaptor.ersatz.Ersatz}.
* </p>
*
* <p>
* For each library there's custom {@link er.neo4jadaptor.ersatz.Ersatz} implementation that uses custom {@link er.neo4jadaptor.ersatz.Translator} to convert between neutral
* and library specific values.
* </p>
*
*/
package er.neo4jadaptor.ersatz;