private void SelectEntities(SimpleEntity mainEntity, IEnumerable <string> expressions)
        {
            //сущности текущего типа, подлежащие добавлению в mainEntity
            List <SimpleEntity> entitiesWithCurrentTypeToAdd = new List <SimpleEntity>();
            bool isEmptyMain = string.IsNullOrEmpty(mainEntity.Type);

            foreach (string type in expressions)
            {
                EntityExpression expression = _expressions.GetExpression(type);
                if ((expression.SelectionType == SelectionType.False) ||
                    (isEmptyMain && (expression.SelectionType == SelectionType.Child)))
                {
                    continue;
                }

                UseExpression(mainEntity, expression);
            }
            foreach (SimpleEntity entity in mainEntity.Children)
            {
                SelectEntities(entity, _expressions.GetExpression(entity.Type).UsedExpressions);
            }
        }
 /// <summary>
 /// Возврат регулярного выражения для дочерней сущности
 /// </summary>
 /// <param name="expression">выражение для выделения сущности</param>
 /// <returns>регулярное выражение для дочерней сущности</returns>
 private string GetChildExpression(EntityExpression expression)
 {
     return(string.Format("({0})", expression.Expression.Replace(string.Format("?<{0}>", ValueGroupName), "")));
 }