public ShardedCriteriaImpl(ShardedCriteriaImpl other)
        {
            Preconditions.CheckNotNull(other);

            this.session                  = other.session;
            this.criteriaFactory          = other.criteriaFactory;
            this.listExitOperationBuilder = new ListExitOperationBuilder(other.listExitOperationBuilder);
            this.establishActions         = new List <Action <ICriteria> >(other.establishActions);
            this.subcriteriaByAlias       = new Dictionary <string, ICriteria>(other.subcriteriaByAlias);
            this.subcriteriaByPath        = new Dictionary <string, Subcriteria>(other.subcriteriaByPath);
        }
 public ShardedCriteriaImpl(IShardedSessionImplementor session, Func <ISession, ICriteria> criteriaFactory)
 {
     Preconditions.CheckNotNull(session);
     Preconditions.CheckNotNull(criteriaFactory);
     this.session                  = session;
     this.criteriaFactory          = criteriaFactory;
     this.listExitOperationBuilder = new ListExitOperationBuilder();
     this.establishActions         = new List <Action <ICriteria> >();
     this.subcriteriaByAlias       = new Dictionary <string, ICriteria> {
         { CriteriaSpecification.RootAlias, this }
     };
     this.subcriteriaByPath = new Dictionary <string, Subcriteria>();
 }