+ if (next_ == NULL)
+ return expression_;
+
+ context.Replace(expression_);
+ context.Replace(next_);
+
+ if (CYCompound *compound = dynamic_cast<CYCompound *>(expression_)) {
+ expression_ = compound->expression_;
+ compound->expression_ = compound->next_;
+ compound->next_ = next_;
+ next_ = compound;
+ }
+