public override void visit(yield_node yn)
 {
     yn.visit(mids);
     // mids.vars - надо установить, какие из них - локальные, какие - из этого класса, какие - являются параметрами функции, а какие - глобальные (все остальные)
     // те, которые являются параметрами, надо скопировать в локальные переменные и переименовать использование везде по ходу данной функции 
     // самое сложное - переменные-поля этого класса - они требуют в создаваемом классе, реализующем итератор, хранить Self текущего класса и добавлять это Self везде по ходу алгоритма
     // вначале будем считать, что переменные-поля этого класса и переменные-параметры не захватываются yield
     //base.visit(yn);
 }
 public override void visit(yield_node yn)
 {
     hasYields = true;
     if (mids != null) // если мы - внутри процедуры
         yn.visit(mids);
     else throw new SyntaxError("Yield must be in functions only", "", yn.source_context, yn);
     // mids.vars - надо установить, какие из них - локальные, какие - из этого класса, какие - являются параметрами функции, а какие - глобальные (все остальные)
     // те, которые являются параметрами, надо скопировать в локальные переменные и переименовать использование везде по ходу данной функции
     // самое сложное - переменные-поля этого класса - они требуют в создаваемом классе, реализующем итератор, хранить Self текущего класса и добавлять это Self везде по ходу алгоритма
     // вначале будем считать, что переменные-поля этого класса и переменные-параметры не захватываются yield
     //base.visit(yn);
 }