getOrCreatePropertyValue(Serializable value);
/**
* alf_prop_value accessor: find or create a property based on the value.
* Note: This method will not recurse into maps or collections. Use the
* dedicated methods if you want recursion; otherwise maps and collections will
* be serialized and probably stored as BLOB values.
*
* Max depth examples (there is no upper limit):
*
* - 0: don't expand the value if it's a map or collection
* - 1: open the value up if it is a map or collection but don't do any more
* - ...
* - 10: open up 10 levels of maps or collections
*
* All collections that are not opened up will be serialized unless there is a
* custom {@link PropertyTypeConverter converter} which can serialize it in an
* alternative format.
*
* @param value the value to find the ID for (may be null)
* @param maxDepth the maximum depth of collections and maps to iterate into
*/
Pair getOrCreatePropertyValue(Serializable value, int maxDepth);
/**
* Utility method to convert property query results into the original value. Note
* that the rows must all share the same root property ID.
*
* If the rows passed in don't constitute a valid, full property - they don't contain all
* the link entities for the property - then the result may be null.
*
* @param rows the search results for a single root property
* @return Returns the root property as originally persisted, or null
* if the rows don't represent a complete property
* @throws IllegalArgumentException if rows don't all share the same root property ID
*/
Serializable convertPropertyIdSearchRows(List rows);
}