anchor.diff: -Discuss design of SQM model.
  +SQM Design Guide
  +================
  +:toc:
   
   At a high level, SQM defines:
  -. a domain model metamodel (org.hibernate.sqm.domain) which represents access to information about
  -the application's domain model
  +
  +. access to information about the application's domain model.  SQM needs this knowledge of the domain
  +	model being queried in order to properly interpret the meaning (semantic) of a query
   . a semantic query model that represents a query against that domain model.
   
   
  -The first thing SQM needs to interpret the meaning of a query is some knowledge of the domain
  -model being queried.  This is the purpose of the `org.hibernate.sqm.domain` package
  +== The SQM Model
   
  -== FromClause
  +=== FromClause
   
   The FromClause defines the parts of the domain model available to the query.  A FromClause
   is made up of one or more FromElementSpaces.  A FromElementSpace is defined by a "query root"
  
positive.code: Now we have 2 Bindings declared (`Person p` and `Person pm`) for the same Bindable (`Person`).
  
  
  == Downcasts
  
  FromElements (others) act as a source of attribute bindings/references.  For example, given a query defining `Person` as a
  root we can now refer to any of the attributes defined on `Person` and its superclasses in the query.
  
negative.code: 
  It is important to note that a FromElementSpace defines a scope for the *use* of identification variables within the
  FromClause (these identification variables must still be unique across the whole FromClause).  E.g., the following
  query is not legal because the join to `p.address` is defined in the second FromElementSpace but
  refers back to the first.
  
  .Illegal cross-space reference
  