/** @return any Criteria. If no Criteria has been established we establish one and return it. */
 private Criteria getOrEstablishSomeCriteria() {
   Criteria criteria = getSomeCriteria();
   if (criteria == null) {
     final Shard shard = shards.get(0);
     criteria = shard.establishCriteria(this);
   }
   return criteria;
 }
 /**
  * @return Returns an actual Criteria object. If no actual Criteria object has been allocated,
  *     allocate one and return it.
  */
 private Criteria getOrEstablishSomeSubcriteria() {
   Criteria crit = getSomeSubcriteria();
   if (crit == null) {
     Shard shard = shards.get(0);
     // this should trigger the creation of all subcriteria for the parent
     shard.establishCriteria(parent);
   }
   return getSomeSubcriteria();
 }