Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68550 - in sandbox/SOC/2010/phoenix3: boost/phoenix/core boost/phoenix/fusion boost/phoenix/object boost/phoenix/object/detail boost/phoenix/object/detail/preprocessed boost/phoenix/operator boost/phoenix/operator/detail boost/phoenix/operator/preprocessed boost/phoenix/scope boost/phoenix/statement boost/phoenix/statement/detail boost/phoenix/statement/detail/preprocessed libs/phoenix/test/scope
From: thom.heller_at_[hidden]
Date: 2011-01-29 15:40:48


Author: theller
Date: 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
New Revision: 68550
URL: http://svn.boost.org/trac/boost/changeset/68550

Log:
fixed context and environment stuff
Text files modified:
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/limits.hpp | 1
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/reference.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/value.hpp | 14
   sandbox/SOC/2010/phoenix3/boost/phoenix/fusion/at.hpp | 2
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/const_cast.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/construct.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/delete.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct_eval.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new_eval.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp | 60 +-
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_20.hpp | 120 ++--
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_30.hpp | 180 +++---
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_40.hpp | 240 +++++-----
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_50.hpp | 300 ++++++------
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_10.hpp | 60 +-
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_20.hpp | 120 ++--
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_30.hpp | 180 +++---
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_40.hpp | 240 +++++-----
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_50.hpp | 300 ++++++------
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/dynamic_cast.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/new.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/reinterpret_cast.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/static_cast.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/member.hpp | 34
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_10.hpp | 182 +++---
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_20.hpp | 362 +++++++-------
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_30.hpp | 542 +++++++++++-----------
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_40.hpp | 722 +++++++++++++++---------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_50.hpp | 902 +++++++++++++++++++-------------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp | 108 +---
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp | 29
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp | 148 ++---
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/scoped_environment.hpp | 23
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_10.hpp | 192 ++++----
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_20.hpp | 372 ++++++++--------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_30.hpp | 552 ++++++++++++------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_40.hpp | 732 ++++++++++++++++----------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_50.hpp | 912 ++++++++++++++++++++--------------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp | 178 +++---
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp | 358 +++++++-------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp | 538 +++++++++++-----------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp | 718 +++++++++++++++---------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp | 898 +++++++++++++++++++-------------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/switch.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/try_catch_eval.hpp | 24
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/do_while.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/if.hpp | 18
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp | 10
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/throw.hpp | 10
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/while.hpp | 8
   sandbox/SOC/2010/phoenix3/libs/phoenix/test/scope/let_tests.cpp | 2
   52 files changed, 5199 insertions(+), 5276 deletions(-)

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/limits.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/limits.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/limits.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -123,6 +123,7 @@
 // this include will bring in mpl::vectorN and
 // fusion::vectorN where N is BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT)
 #include <boost/fusion/container/vector/vector10.hpp>
+#include <boost/fusion/container/map.hpp>
 #if BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT) > 10
 #include <boost/fusion/container/vector/vector20.hpp>
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/reference.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/reference.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/reference.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -78,8 +78,8 @@
     {
         typedef T &result_type;
 
- template <typename Env>
- T &operator()(boost::reference_wrapper<T> r, Env &) const
+ template <typename Context>
+ T &operator()(boost::reference_wrapper<T> r, Context &) const
         {
             return r;
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/value.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/value.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/value.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -71,18 +71,18 @@
         template <typename Sig>
         struct result;
 
- template <typename This, typename Actor, typename Env>
- struct result<This(Actor, Env)>
+ template <typename This, typename Actor, typename Context>
+ struct result<This(Actor, Context)>
             : boost::remove_reference<
- typename evaluator::impl<Actor, Env, int>::result_type
+ typename evaluator::impl<Actor, Context, int>::result_type
>
         {};
 
- template <typename Env>
- typename result<custom_terminal(actor<Expr> const &, Env &)>::type
- operator()(actor<Expr> const & expr, Env & env) const
+ template <typename Context>
+ typename result<custom_terminal(actor<Expr> const &, Context &)>::type
+ operator()(actor<Expr> const & expr, Context & ctx) const
         {
- return eval(expr, env);
+ return eval(expr, ctx);
         }
     };
 }}

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/fusion/at.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/fusion/at.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/fusion/at.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -26,7 +26,7 @@
     struct default_actions::when<rule::at_c, Dummy>
         : proto::call<
             proto::functional::at(
- evaluator(proto::_child_c<1>, _context)
+ evaluator(proto::_child_c<1>)
               , proto::_value(proto::_child_c<0>)
             )
>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/const_cast.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/const_cast.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/const_cast.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -26,11 +26,11 @@
     {
         typedef typename T::type result_type;
 
- template <typename Env, typename U>
+ template <typename Context, typename U>
         result_type
- operator()(Env& env, U const& u) const
+ operator()(Context& ctx, U const& u) const
         {
- return const_cast<result_type>(eval(u, env));
+ return const_cast<result_type>(eval(u, ctx));
         }
     };
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/construct.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/construct.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/construct.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -27,9 +27,9 @@
     {
         typedef typename T::type result_type;
 
- template <typename Env>
+ template <typename Context>
         result_type
- operator()(Env& env) const
+ operator()(Context&) const
         {
             return result_type();
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/delete.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/delete.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/delete.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -41,11 +41,11 @@
     {
         typedef void result_type;
 
- template <typename Env, typename P>
+ template <typename Context, typename P>
         result_type
- operator()(Env& env, P const& p) const
+ operator()(Context& ctx, P const& p) const
         {
- delete eval(p, env);
+ delete eval(p, ctx);
         }
     };
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct_eval.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct_eval.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct_eval.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -42,12 +42,12 @@
 
 #else
         
- template <typename Env, PHOENIX_typename_A>
+ template <typename Context, PHOENIX_typename_A>
         result_type
- operator()(Env& env, PHOENIX_A_const_ref_a) const
+ operator()(Context& ctx, PHOENIX_A_const_ref_a) const
         {
 #define EVAL_a(_,n,__) \
- BOOST_PP_COMMA_IF(n) eval(a ## n, env)
+ BOOST_PP_COMMA_IF(n) eval(a ## n, ctx)
 
             return result_type(BOOST_PP_REPEAT(PHOENIX_ITERATION, EVAL_a, _));
 #undef EVAL_a

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new_eval.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new_eval.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new_eval.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -42,12 +42,12 @@
 
 #else
 
- template <typename Env, PHOENIX_typename_A>
+ template <typename Context, PHOENIX_typename_A>
         result_type
- operator()(Env& env, PHOENIX_A_const_ref_a) const
+ operator()(Context& ctx, PHOENIX_A_const_ref_a) const
         {
 #define EVAL_a(_,n,__) \
- BOOST_PP_COMMA_IF(n) eval(a ## n, env)
+ BOOST_PP_COMMA_IF(n) eval(a ## n, ctx)
 
             return
                 new construct_type(

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -13,11 +13,11 @@
     
     
         
- template <typename Env, typename A0>
+ template <typename Context, typename A0>
         result_type
- operator()(Env& env, A0 const& a0) const
+ operator()(Context& ctx, A0 const& a0) const
         {
- return result_type(eval(a0, env));
+ return result_type(eval(a0, ctx));
         }
     
     
@@ -27,11 +27,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1>
+ template <typename Context, typename A0 , typename A1>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
         {
- return result_type(eval(a0, env) , eval(a1, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx));
         }
     
     
@@ -41,11 +41,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename A0 , typename A1 , typename A2>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx));
         }
     
     
@@ -55,11 +55,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx));
         }
     
     
@@ -69,11 +69,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx));
         }
     
     
@@ -83,11 +83,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx));
         }
     
     
@@ -97,11 +97,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx));
         }
     
     
@@ -111,11 +111,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx));
         }
     
     
@@ -125,11 +125,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx));
         }
     
     
@@ -139,9 +139,9 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx));
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_20.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -13,11 +13,11 @@
     
     
         
- template <typename Env, typename A0>
+ template <typename Context, typename A0>
         result_type
- operator()(Env& env, A0 const& a0) const
+ operator()(Context& ctx, A0 const& a0) const
         {
- return result_type(eval(a0, env));
+ return result_type(eval(a0, ctx));
         }
     
     
@@ -27,11 +27,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1>
+ template <typename Context, typename A0 , typename A1>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
         {
- return result_type(eval(a0, env) , eval(a1, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx));
         }
     
     
@@ -41,11 +41,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename A0 , typename A1 , typename A2>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx));
         }
     
     
@@ -55,11 +55,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx));
         }
     
     
@@ -69,11 +69,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx));
         }
     
     
@@ -83,11 +83,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx));
         }
     
     
@@ -97,11 +97,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx));
         }
     
     
@@ -111,11 +111,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx));
         }
     
     
@@ -125,11 +125,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx));
         }
     
     
@@ -139,11 +139,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx));
         }
     
     
@@ -153,11 +153,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx));
         }
     
     
@@ -167,11 +167,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx));
         }
     
     
@@ -181,11 +181,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx));
         }
     
     
@@ -195,11 +195,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx));
         }
     
     
@@ -209,11 +209,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx));
         }
     
     
@@ -223,11 +223,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx));
         }
     
     
@@ -237,11 +237,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx));
         }
     
     
@@ -251,11 +251,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx));
         }
     
     
@@ -265,11 +265,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx));
         }
     
     
@@ -279,9 +279,9 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx));
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_30.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -13,11 +13,11 @@
     
     
         
- template <typename Env, typename A0>
+ template <typename Context, typename A0>
         result_type
- operator()(Env& env, A0 const& a0) const
+ operator()(Context& ctx, A0 const& a0) const
         {
- return result_type(eval(a0, env));
+ return result_type(eval(a0, ctx));
         }
     
     
@@ -27,11 +27,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1>
+ template <typename Context, typename A0 , typename A1>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
         {
- return result_type(eval(a0, env) , eval(a1, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx));
         }
     
     
@@ -41,11 +41,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename A0 , typename A1 , typename A2>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx));
         }
     
     
@@ -55,11 +55,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx));
         }
     
     
@@ -69,11 +69,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx));
         }
     
     
@@ -83,11 +83,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx));
         }
     
     
@@ -97,11 +97,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx));
         }
     
     
@@ -111,11 +111,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx));
         }
     
     
@@ -125,11 +125,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx));
         }
     
     
@@ -139,11 +139,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx));
         }
     
     
@@ -153,11 +153,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx));
         }
     
     
@@ -167,11 +167,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx));
         }
     
     
@@ -181,11 +181,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx));
         }
     
     
@@ -195,11 +195,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx));
         }
     
     
@@ -209,11 +209,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx));
         }
     
     
@@ -223,11 +223,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx));
         }
     
     
@@ -237,11 +237,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx));
         }
     
     
@@ -251,11 +251,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx));
         }
     
     
@@ -265,11 +265,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx));
         }
     
     
@@ -279,11 +279,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx));
         }
     
     
@@ -293,11 +293,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx));
         }
     
     
@@ -307,11 +307,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx));
         }
     
     
@@ -321,11 +321,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx));
         }
     
     
@@ -335,11 +335,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx));
         }
     
     
@@ -349,11 +349,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx));
         }
     
     
@@ -363,11 +363,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx));
         }
     
     
@@ -377,11 +377,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx));
         }
     
     
@@ -391,11 +391,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx));
         }
     
     
@@ -405,11 +405,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx));
         }
     
     
@@ -419,9 +419,9 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx));
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_40.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -13,11 +13,11 @@
     
     
         
- template <typename Env, typename A0>
+ template <typename Context, typename A0>
         result_type
- operator()(Env& env, A0 const& a0) const
+ operator()(Context& ctx, A0 const& a0) const
         {
- return result_type(eval(a0, env));
+ return result_type(eval(a0, ctx));
         }
     
     
@@ -27,11 +27,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1>
+ template <typename Context, typename A0 , typename A1>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
         {
- return result_type(eval(a0, env) , eval(a1, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx));
         }
     
     
@@ -41,11 +41,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename A0 , typename A1 , typename A2>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx));
         }
     
     
@@ -55,11 +55,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx));
         }
     
     
@@ -69,11 +69,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx));
         }
     
     
@@ -83,11 +83,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx));
         }
     
     
@@ -97,11 +97,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx));
         }
     
     
@@ -111,11 +111,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx));
         }
     
     
@@ -125,11 +125,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx));
         }
     
     
@@ -139,11 +139,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx));
         }
     
     
@@ -153,11 +153,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx));
         }
     
     
@@ -167,11 +167,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx));
         }
     
     
@@ -181,11 +181,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx));
         }
     
     
@@ -195,11 +195,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx));
         }
     
     
@@ -209,11 +209,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx));
         }
     
     
@@ -223,11 +223,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx));
         }
     
     
@@ -237,11 +237,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx));
         }
     
     
@@ -251,11 +251,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx));
         }
     
     
@@ -265,11 +265,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx));
         }
     
     
@@ -279,11 +279,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx));
         }
     
     
@@ -293,11 +293,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx));
         }
     
     
@@ -307,11 +307,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx));
         }
     
     
@@ -321,11 +321,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx));
         }
     
     
@@ -335,11 +335,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx));
         }
     
     
@@ -349,11 +349,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx));
         }
     
     
@@ -363,11 +363,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx));
         }
     
     
@@ -377,11 +377,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx));
         }
     
     
@@ -391,11 +391,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx));
         }
     
     
@@ -405,11 +405,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx));
         }
     
     
@@ -419,11 +419,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx));
         }
     
     
@@ -433,11 +433,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx));
         }
     
     
@@ -447,11 +447,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx));
         }
     
     
@@ -461,11 +461,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx));
         }
     
     
@@ -475,11 +475,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx));
         }
     
     
@@ -489,11 +489,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx));
         }
     
     
@@ -503,11 +503,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx));
         }
     
     
@@ -517,11 +517,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx));
         }
     
     
@@ -531,11 +531,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx));
         }
     
     
@@ -545,11 +545,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx));
         }
     
     
@@ -559,9 +559,9 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx));
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_50.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -13,11 +13,11 @@
     
     
         
- template <typename Env, typename A0>
+ template <typename Context, typename A0>
         result_type
- operator()(Env& env, A0 const& a0) const
+ operator()(Context& ctx, A0 const& a0) const
         {
- return result_type(eval(a0, env));
+ return result_type(eval(a0, ctx));
         }
     
     
@@ -27,11 +27,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1>
+ template <typename Context, typename A0 , typename A1>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
         {
- return result_type(eval(a0, env) , eval(a1, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx));
         }
     
     
@@ -41,11 +41,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename A0 , typename A1 , typename A2>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx));
         }
     
     
@@ -55,11 +55,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx));
         }
     
     
@@ -69,11 +69,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx));
         }
     
     
@@ -83,11 +83,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx));
         }
     
     
@@ -97,11 +97,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx));
         }
     
     
@@ -111,11 +111,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx));
         }
     
     
@@ -125,11 +125,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx));
         }
     
     
@@ -139,11 +139,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx));
         }
     
     
@@ -153,11 +153,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx));
         }
     
     
@@ -167,11 +167,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx));
         }
     
     
@@ -181,11 +181,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx));
         }
     
     
@@ -195,11 +195,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx));
         }
     
     
@@ -209,11 +209,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx));
         }
     
     
@@ -223,11 +223,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx));
         }
     
     
@@ -237,11 +237,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx));
         }
     
     
@@ -251,11 +251,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx));
         }
     
     
@@ -265,11 +265,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx));
         }
     
     
@@ -279,11 +279,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx));
         }
     
     
@@ -293,11 +293,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx));
         }
     
     
@@ -307,11 +307,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx));
         }
     
     
@@ -321,11 +321,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx));
         }
     
     
@@ -335,11 +335,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx));
         }
     
     
@@ -349,11 +349,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx));
         }
     
     
@@ -363,11 +363,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx));
         }
     
     
@@ -377,11 +377,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx));
         }
     
     
@@ -391,11 +391,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx));
         }
     
     
@@ -405,11 +405,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx));
         }
     
     
@@ -419,11 +419,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx));
         }
     
     
@@ -433,11 +433,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx));
         }
     
     
@@ -447,11 +447,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx));
         }
     
     
@@ -461,11 +461,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx));
         }
     
     
@@ -475,11 +475,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx));
         }
     
     
@@ -489,11 +489,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx));
         }
     
     
@@ -503,11 +503,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx));
         }
     
     
@@ -517,11 +517,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx));
         }
     
     
@@ -531,11 +531,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx));
         }
     
     
@@ -545,11 +545,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx));
         }
     
     
@@ -559,11 +559,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx));
         }
     
     
@@ -573,11 +573,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx));
         }
     
     
@@ -587,11 +587,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx));
         }
     
     
@@ -601,11 +601,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx));
         }
     
     
@@ -615,11 +615,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx));
         }
     
     
@@ -629,11 +629,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env) , eval(a44, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx));
         }
     
     
@@ -643,11 +643,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env) , eval(a44, env) , eval(a45, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx));
         }
     
     
@@ -657,11 +657,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env) , eval(a44, env) , eval(a45, env) , eval(a46, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx));
         }
     
     
@@ -671,11 +671,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env) , eval(a44, env) , eval(a45, env) , eval(a46, env) , eval(a47, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx));
         }
     
     
@@ -685,11 +685,11 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env) , eval(a44, env) , eval(a45, env) , eval(a46, env) , eval(a47, env) , eval(a48, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx));
         }
     
     
@@ -699,9 +699,9 @@
     
     
         
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) const
         {
- return result_type(eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env) , eval(a44, env) , eval(a45, env) , eval(a46, env) , eval(a47, env) , eval(a48, env) , eval(a49, env));
+ return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx) , eval(a49, ctx));
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_10.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -12,13 +12,13 @@
     
     
     
- template <typename Env, typename A0>
+ template <typename Context, typename A0>
         result_type
- operator()(Env& env, A0 const& a0) const
+ operator()(Context& ctx, A0 const& a0) const
         {
             return
                 new construct_type(
- eval(a0, env)
+ eval(a0, ctx)
                 );
         }
     
@@ -28,13 +28,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1>
+ template <typename Context, typename A0 , typename A1>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env)
+ eval(a0, ctx) , eval(a1, ctx)
                 );
         }
     
@@ -44,13 +44,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename A0 , typename A1 , typename A2>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx)
                 );
         }
     
@@ -60,13 +60,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
                 );
         }
     
@@ -76,13 +76,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
     
@@ -92,13 +92,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
     
@@ -108,13 +108,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
     
@@ -124,13 +124,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
     
@@ -140,13 +140,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
     
@@ -156,12 +156,12 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_20.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -12,13 +12,13 @@
     
     
     
- template <typename Env, typename A0>
+ template <typename Context, typename A0>
         result_type
- operator()(Env& env, A0 const& a0) const
+ operator()(Context& ctx, A0 const& a0) const
         {
             return
                 new construct_type(
- eval(a0, env)
+ eval(a0, ctx)
                 );
         }
     
@@ -28,13 +28,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1>
+ template <typename Context, typename A0 , typename A1>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env)
+ eval(a0, ctx) , eval(a1, ctx)
                 );
         }
     
@@ -44,13 +44,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename A0 , typename A1 , typename A2>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx)
                 );
         }
     
@@ -60,13 +60,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
                 );
         }
     
@@ -76,13 +76,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
     
@@ -92,13 +92,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
     
@@ -108,13 +108,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
     
@@ -124,13 +124,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
     
@@ -140,13 +140,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
     
@@ -156,13 +156,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }
     
@@ -172,13 +172,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
                 );
         }
     
@@ -188,13 +188,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
                 );
         }
     
@@ -204,13 +204,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
                 );
         }
     
@@ -220,13 +220,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
                 );
         }
     
@@ -236,13 +236,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
                 );
         }
     
@@ -252,13 +252,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
                 );
         }
     
@@ -268,13 +268,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
                 );
         }
     
@@ -284,13 +284,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
                 );
         }
     
@@ -300,13 +300,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
                 );
         }
     
@@ -316,12 +316,12 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
                 );
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_30.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -12,13 +12,13 @@
     
     
     
- template <typename Env, typename A0>
+ template <typename Context, typename A0>
         result_type
- operator()(Env& env, A0 const& a0) const
+ operator()(Context& ctx, A0 const& a0) const
         {
             return
                 new construct_type(
- eval(a0, env)
+ eval(a0, ctx)
                 );
         }
     
@@ -28,13 +28,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1>
+ template <typename Context, typename A0 , typename A1>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env)
+ eval(a0, ctx) , eval(a1, ctx)
                 );
         }
     
@@ -44,13 +44,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename A0 , typename A1 , typename A2>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx)
                 );
         }
     
@@ -60,13 +60,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
                 );
         }
     
@@ -76,13 +76,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
     
@@ -92,13 +92,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
     
@@ -108,13 +108,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
     
@@ -124,13 +124,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
     
@@ -140,13 +140,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
     
@@ -156,13 +156,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }
     
@@ -172,13 +172,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
                 );
         }
     
@@ -188,13 +188,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
                 );
         }
     
@@ -204,13 +204,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
                 );
         }
     
@@ -220,13 +220,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
                 );
         }
     
@@ -236,13 +236,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
                 );
         }
     
@@ -252,13 +252,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
                 );
         }
     
@@ -268,13 +268,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
                 );
         }
     
@@ -284,13 +284,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
                 );
         }
     
@@ -300,13 +300,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
                 );
         }
     
@@ -316,13 +316,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
                 );
         }
     
@@ -332,13 +332,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx)
                 );
         }
     
@@ -348,13 +348,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx)
                 );
         }
     
@@ -364,13 +364,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx)
                 );
         }
     
@@ -380,13 +380,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx)
                 );
         }
     
@@ -396,13 +396,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx)
                 );
         }
     
@@ -412,13 +412,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx)
                 );
         }
     
@@ -428,13 +428,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx)
                 );
         }
     
@@ -444,13 +444,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx)
                 );
         }
     
@@ -460,13 +460,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx)
                 );
         }
     
@@ -476,12 +476,12 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx)
                 );
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_40.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -12,13 +12,13 @@
     
     
     
- template <typename Env, typename A0>
+ template <typename Context, typename A0>
         result_type
- operator()(Env& env, A0 const& a0) const
+ operator()(Context& ctx, A0 const& a0) const
         {
             return
                 new construct_type(
- eval(a0, env)
+ eval(a0, ctx)
                 );
         }
     
@@ -28,13 +28,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1>
+ template <typename Context, typename A0 , typename A1>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env)
+ eval(a0, ctx) , eval(a1, ctx)
                 );
         }
     
@@ -44,13 +44,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename A0 , typename A1 , typename A2>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx)
                 );
         }
     
@@ -60,13 +60,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
                 );
         }
     
@@ -76,13 +76,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
     
@@ -92,13 +92,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
     
@@ -108,13 +108,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
     
@@ -124,13 +124,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
     
@@ -140,13 +140,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
     
@@ -156,13 +156,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }
     
@@ -172,13 +172,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
                 );
         }
     
@@ -188,13 +188,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
                 );
         }
     
@@ -204,13 +204,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
                 );
         }
     
@@ -220,13 +220,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
                 );
         }
     
@@ -236,13 +236,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
                 );
         }
     
@@ -252,13 +252,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
                 );
         }
     
@@ -268,13 +268,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
                 );
         }
     
@@ -284,13 +284,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
                 );
         }
     
@@ -300,13 +300,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
                 );
         }
     
@@ -316,13 +316,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
                 );
         }
     
@@ -332,13 +332,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx)
                 );
         }
     
@@ -348,13 +348,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx)
                 );
         }
     
@@ -364,13 +364,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx)
                 );
         }
     
@@ -380,13 +380,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx)
                 );
         }
     
@@ -396,13 +396,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx)
                 );
         }
     
@@ -412,13 +412,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx)
                 );
         }
     
@@ -428,13 +428,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx)
                 );
         }
     
@@ -444,13 +444,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx)
                 );
         }
     
@@ -460,13 +460,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx)
                 );
         }
     
@@ -476,13 +476,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx)
                 );
         }
     
@@ -492,13 +492,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx)
                 );
         }
     
@@ -508,13 +508,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx)
                 );
         }
     
@@ -524,13 +524,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx)
                 );
         }
     
@@ -540,13 +540,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx)
                 );
         }
     
@@ -556,13 +556,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx)
                 );
         }
     
@@ -572,13 +572,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx)
                 );
         }
     
@@ -588,13 +588,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx)
                 );
         }
     
@@ -604,13 +604,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx)
                 );
         }
     
@@ -620,13 +620,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx)
                 );
         }
     
@@ -636,12 +636,12 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx)
                 );
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_50.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -12,13 +12,13 @@
     
     
     
- template <typename Env, typename A0>
+ template <typename Context, typename A0>
         result_type
- operator()(Env& env, A0 const& a0) const
+ operator()(Context& ctx, A0 const& a0) const
         {
             return
                 new construct_type(
- eval(a0, env)
+ eval(a0, ctx)
                 );
         }
     
@@ -28,13 +28,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1>
+ template <typename Context, typename A0 , typename A1>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env)
+ eval(a0, ctx) , eval(a1, ctx)
                 );
         }
     
@@ -44,13 +44,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename A0 , typename A1 , typename A2>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx)
                 );
         }
     
@@ -60,13 +60,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
                 );
         }
     
@@ -76,13 +76,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
     
@@ -92,13 +92,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
     
@@ -108,13 +108,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
     
@@ -124,13 +124,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
     
@@ -140,13 +140,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
     
@@ -156,13 +156,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }
     
@@ -172,13 +172,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
                 );
         }
     
@@ -188,13 +188,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
                 );
         }
     
@@ -204,13 +204,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
                 );
         }
     
@@ -220,13 +220,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
                 );
         }
     
@@ -236,13 +236,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
                 );
         }
     
@@ -252,13 +252,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
                 );
         }
     
@@ -268,13 +268,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
                 );
         }
     
@@ -284,13 +284,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
                 );
         }
     
@@ -300,13 +300,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
                 );
         }
     
@@ -316,13 +316,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
                 );
         }
     
@@ -332,13 +332,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx)
                 );
         }
     
@@ -348,13 +348,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx)
                 );
         }
     
@@ -364,13 +364,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx)
                 );
         }
     
@@ -380,13 +380,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx)
                 );
         }
     
@@ -396,13 +396,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx)
                 );
         }
     
@@ -412,13 +412,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx)
                 );
         }
     
@@ -428,13 +428,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx)
                 );
         }
     
@@ -444,13 +444,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx)
                 );
         }
     
@@ -460,13 +460,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx)
                 );
         }
     
@@ -476,13 +476,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx)
                 );
         }
     
@@ -492,13 +492,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx)
                 );
         }
     
@@ -508,13 +508,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx)
                 );
         }
     
@@ -524,13 +524,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx)
                 );
         }
     
@@ -540,13 +540,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx)
                 );
         }
     
@@ -556,13 +556,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx)
                 );
         }
     
@@ -572,13 +572,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx)
                 );
         }
     
@@ -588,13 +588,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx)
                 );
         }
     
@@ -604,13 +604,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx)
                 );
         }
     
@@ -620,13 +620,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx)
                 );
         }
     
@@ -636,13 +636,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx)
                 );
         }
     
@@ -652,13 +652,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx)
                 );
         }
     
@@ -668,13 +668,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx)
                 );
         }
     
@@ -684,13 +684,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx)
                 );
         }
     
@@ -700,13 +700,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx)
                 );
         }
     
@@ -716,13 +716,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env) , eval(a44, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx)
                 );
         }
     
@@ -732,13 +732,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env) , eval(a44, env) , eval(a45, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx)
                 );
         }
     
@@ -748,13 +748,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env) , eval(a44, env) , eval(a45, env) , eval(a46, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx)
                 );
         }
     
@@ -764,13 +764,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env) , eval(a44, env) , eval(a45, env) , eval(a46, env) , eval(a47, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx)
                 );
         }
     
@@ -780,13 +780,13 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env) , eval(a44, env) , eval(a45, env) , eval(a46, env) , eval(a47, env) , eval(a48, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx)
                 );
         }
     
@@ -796,12 +796,12 @@
     
     
     
- template <typename Env, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
         result_type
- operator()(Env& env, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) const
+ operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) const
         {
             return
                 new construct_type(
- eval(a0, env) , eval(a1, env) , eval(a2, env) , eval(a3, env) , eval(a4, env) , eval(a5, env) , eval(a6, env) , eval(a7, env) , eval(a8, env) , eval(a9, env) , eval(a10, env) , eval(a11, env) , eval(a12, env) , eval(a13, env) , eval(a14, env) , eval(a15, env) , eval(a16, env) , eval(a17, env) , eval(a18, env) , eval(a19, env) , eval(a20, env) , eval(a21, env) , eval(a22, env) , eval(a23, env) , eval(a24, env) , eval(a25, env) , eval(a26, env) , eval(a27, env) , eval(a28, env) , eval(a29, env) , eval(a30, env) , eval(a31, env) , eval(a32, env) , eval(a33, env) , eval(a34, env) , eval(a35, env) , eval(a36, env) , eval(a37, env) , eval(a38, env) , eval(a39, env) , eval(a40, env) , eval(a41, env) , eval(a42, env) , eval(a43, env) , eval(a44, env) , eval(a45, env) , eval(a46, env) , eval(a47, env) , eval(a48, env) , eval(a49, env)
+ eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx) , eval(a49, ctx)
                 );
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/dynamic_cast.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/dynamic_cast.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/dynamic_cast.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -26,11 +26,11 @@
     {
         typedef typename T::type result_type;
 
- template <typename Env, typename U>
+ template <typename Context, typename U>
         result_type
- operator()(Env& env, U const& u) const
+ operator()(Context& ctx, U const& u) const
         {
- return dynamic_cast<result_type>(eval(u, env));
+ return dynamic_cast<result_type>(eval(u, ctx));
         }
     };
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/new.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/new.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/new.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -29,9 +29,9 @@
         typedef typename T::type construct_type;
         typedef typename T::type* result_type;
 
- template <typename Env>
+ template <typename Context>
         result_type
- operator()(Env& env) const
+ operator()(Context&) const
         {
             return new construct_type;
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/reinterpret_cast.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/reinterpret_cast.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/reinterpret_cast.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -26,11 +26,11 @@
     {
         typedef typename T::type result_type;
 
- template <typename Env, typename U>
+ template <typename Context, typename U>
         result_type
- operator()(Env& env, U const& u) const
+ operator()(Context& ctx, U const& u) const
         {
- return reinterpret_cast<result_type>(eval(u, env));
+ return reinterpret_cast<result_type>(eval(u, ctx));
         }
     };
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/static_cast.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/static_cast.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/static_cast.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -26,11 +26,11 @@
     {
         typedef typename T::type result_type;
 
- template <typename Env, typename U>
+ template <typename Context, typename U>
         result_type
- operator()(Env& env, U const& u) const
+ operator()(Context& ctx, U const& u) const
         {
- return static_cast<result_type>(eval(u, env));
+ return static_cast<result_type>(eval(u, ctx));
         }
     };
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -15,7 +15,7 @@
                 typename \
                 evaluator::impl< \
                     typename proto::result_of::child_c<Expr, N>::type \
- , Env \
+ , Context \
                   , int \
>::result_type \
                 BOOST_PP_CAT(child, N); \
@@ -32,8 +32,8 @@
 
 #else
 
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, PHOENIX_ITERATION>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, PHOENIX_ITERATION>
         {
             BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_MEM_FUN_PTR_EVAL_RESULT_OF_CHILD, _)
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/member.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/member.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/member.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -62,7 +62,7 @@
     namespace result_of
     {
         template <
- typename Env
+ typename Context
           , typename Expr
           , long Arity = proto::arity_of<Expr>::value
>
@@ -77,23 +77,23 @@
         template<typename Sig>
         struct result;
         
- template <typename This, typename Env, typename Expr>
- struct result<This(Env, Expr const &)>
- : result<This(Env const &, Expr const &)>
+ template <typename This, typename Context, typename Expr>
+ struct result<This(Context, Expr const &)>
+ : result<This(Context const &, Expr const &)>
         {};
 
- template <typename This, typename Env, typename Expr>
- struct result<This(Env &, Expr const &)>
- : result_of::mem_fun_ptr_eval<Env, Expr>
+ template <typename This, typename Context, typename Expr>
+ struct result<This(Context &, Expr const &)>
+ : result_of::mem_fun_ptr_eval<Context, Expr>
         {};
 
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
- operator()(Env & env, Expr const & expr) const
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
+ operator()(Context & ctx, Expr const & expr) const
         {
             return
                 this->evaluate(
- env
+ ctx
                   , expr
                   , typename proto::arity_of<Expr>::type()
                 );
@@ -101,7 +101,7 @@
 
     #define PHOENIX_MEMBER_EVAL(Z, N, D) \
         BOOST_PP_COMMA_IF(BOOST_PP_NOT(BOOST_PP_EQUAL(N, 2))) \
- eval(proto::child_c< N >(expr), env) \
+ eval(proto::child_c< N >(expr), ctx) \
     /**/
         private:
     #define PHOENIX_ITERATION_PARAMS \
@@ -127,18 +127,18 @@
 
 #else // PHOENIX_IS_ITERATING
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<PHOENIX_ITERATION>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
                     BOOST_PP_REPEAT_FROM_TO(
                         2

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_10.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -21,7 +21,7 @@
     namespace result_of
     {
         template <
- typename Env
+ typename Context
           , typename Expr
           , long Arity = proto::arity_of<Expr>::value
>
@@ -33,10 +33,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 2>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 2>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1;
             typedef
                 typename boost::result_of<
                     child1(
@@ -52,10 +52,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 3>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 3>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2;
             typedef
                 typename boost::result_of<
                     child1(
@@ -71,10 +71,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 4>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 4>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3;
             typedef
                 typename boost::result_of<
                     child1(
@@ -90,10 +90,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 5>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 5>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4;
             typedef
                 typename boost::result_of<
                     child1(
@@ -109,10 +109,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 6>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 6>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5;
             typedef
                 typename boost::result_of<
                     child1(
@@ -128,10 +128,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 7>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 7>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6;
             typedef
                 typename boost::result_of<
                     child1(
@@ -147,10 +147,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 8>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 8>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7;
             typedef
                 typename boost::result_of<
                     child1(
@@ -166,10 +166,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 9>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 9>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8;
             typedef
                 typename boost::result_of<
                     child1(
@@ -185,10 +185,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 10>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 10>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9;
             typedef
                 typename boost::result_of<
                     child1(
@@ -204,21 +204,21 @@
         template<typename Sig>
         struct result;
         
- template <typename This, typename Env, typename Expr>
- struct result<This(Env, Expr const &)>
- : result<This(Env const &, Expr const &)>
+ template <typename This, typename Context, typename Expr>
+ struct result<This(Context, Expr const &)>
+ : result<This(Context const &, Expr const &)>
         {};
- template <typename This, typename Env, typename Expr>
- struct result<This(Env &, Expr const &)>
- : result_of::mem_fun_ptr_eval<Env, Expr>
+ template <typename This, typename Context, typename Expr>
+ struct result<This(Context &, Expr const &)>
+ : result_of::mem_fun_ptr_eval<Context, Expr>
         {};
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
- operator()(Env & env, Expr const & expr) const
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
+ operator()(Context & ctx, Expr const & expr) const
         {
             return
                 this->evaluate(
- env
+ ctx
                   , expr
                   , typename proto::arity_of<Expr>::type()
                 );
@@ -232,18 +232,18 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<2>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
                     
                 );
@@ -257,20 +257,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<3>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx)
                 );
         }
         
@@ -282,20 +282,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<4>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx)
                 );
         }
         
@@ -307,20 +307,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<5>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx)
                 );
         }
         
@@ -332,20 +332,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<6>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx)
                 );
         }
         
@@ -357,20 +357,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<7>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx)
                 );
         }
         
@@ -382,20 +382,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<8>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx)
                 );
         }
         
@@ -407,20 +407,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<9>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx)
                 );
         }
         
@@ -432,20 +432,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<10>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx)
                 );
         }
         

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_20.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -21,7 +21,7 @@
     namespace result_of
     {
         template <
- typename Env
+ typename Context
           , typename Expr
           , long Arity = proto::arity_of<Expr>::value
>
@@ -33,10 +33,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 2>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 2>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1;
             typedef
                 typename boost::result_of<
                     child1(
@@ -52,10 +52,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 3>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 3>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2;
             typedef
                 typename boost::result_of<
                     child1(
@@ -71,10 +71,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 4>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 4>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3;
             typedef
                 typename boost::result_of<
                     child1(
@@ -90,10 +90,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 5>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 5>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4;
             typedef
                 typename boost::result_of<
                     child1(
@@ -109,10 +109,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 6>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 6>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5;
             typedef
                 typename boost::result_of<
                     child1(
@@ -128,10 +128,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 7>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 7>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6;
             typedef
                 typename boost::result_of<
                     child1(
@@ -147,10 +147,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 8>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 8>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7;
             typedef
                 typename boost::result_of<
                     child1(
@@ -166,10 +166,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 9>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 9>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8;
             typedef
                 typename boost::result_of<
                     child1(
@@ -185,10 +185,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 10>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 10>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9;
             typedef
                 typename boost::result_of<
                     child1(
@@ -204,10 +204,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 11>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 11>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10;
             typedef
                 typename boost::result_of<
                     child1(
@@ -223,10 +223,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 12>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 12>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11;
             typedef
                 typename boost::result_of<
                     child1(
@@ -242,10 +242,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 13>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 13>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12;
             typedef
                 typename boost::result_of<
                     child1(
@@ -261,10 +261,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 14>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 14>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13;
             typedef
                 typename boost::result_of<
                     child1(
@@ -280,10 +280,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 15>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 15>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14;
             typedef
                 typename boost::result_of<
                     child1(
@@ -299,10 +299,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 16>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 16>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15;
             typedef
                 typename boost::result_of<
                     child1(
@@ -318,10 +318,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 17>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 17>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16;
             typedef
                 typename boost::result_of<
                     child1(
@@ -337,10 +337,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 18>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 18>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17;
             typedef
                 typename boost::result_of<
                     child1(
@@ -356,10 +356,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 19>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 19>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18;
             typedef
                 typename boost::result_of<
                     child1(
@@ -375,10 +375,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 20>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 20>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19;
             typedef
                 typename boost::result_of<
                     child1(
@@ -394,21 +394,21 @@
         template<typename Sig>
         struct result;
         
- template <typename This, typename Env, typename Expr>
- struct result<This(Env, Expr const &)>
- : result<This(Env const &, Expr const &)>
+ template <typename This, typename Context, typename Expr>
+ struct result<This(Context, Expr const &)>
+ : result<This(Context const &, Expr const &)>
         {};
- template <typename This, typename Env, typename Expr>
- struct result<This(Env &, Expr const &)>
- : result_of::mem_fun_ptr_eval<Env, Expr>
+ template <typename This, typename Context, typename Expr>
+ struct result<This(Context &, Expr const &)>
+ : result_of::mem_fun_ptr_eval<Context, Expr>
         {};
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
- operator()(Env & env, Expr const & expr) const
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
+ operator()(Context & ctx, Expr const & expr) const
         {
             return
                 this->evaluate(
- env
+ ctx
                   , expr
                   , typename proto::arity_of<Expr>::type()
                 );
@@ -422,18 +422,18 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<2>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
                     
                 );
@@ -447,20 +447,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<3>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx)
                 );
         }
         
@@ -472,20 +472,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<4>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx)
                 );
         }
         
@@ -497,20 +497,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<5>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx)
                 );
         }
         
@@ -522,20 +522,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<6>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx)
                 );
         }
         
@@ -547,20 +547,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<7>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx)
                 );
         }
         
@@ -572,20 +572,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<8>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx)
                 );
         }
         
@@ -597,20 +597,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<9>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx)
                 );
         }
         
@@ -622,20 +622,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<10>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx)
                 );
         }
         
@@ -647,20 +647,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<11>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx)
                 );
         }
         
@@ -672,20 +672,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<12>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx)
                 );
         }
         
@@ -697,20 +697,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<13>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx)
                 );
         }
         
@@ -722,20 +722,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<14>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx)
                 );
         }
         
@@ -747,20 +747,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<15>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx)
                 );
         }
         
@@ -772,20 +772,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<16>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx)
                 );
         }
         
@@ -797,20 +797,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<17>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx)
                 );
         }
         
@@ -822,20 +822,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<18>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx)
                 );
         }
         
@@ -847,20 +847,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<19>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx)
                 );
         }
         
@@ -872,20 +872,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<20>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx)
                 );
         }
         

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_30.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -21,7 +21,7 @@
     namespace result_of
     {
         template <
- typename Env
+ typename Context
           , typename Expr
           , long Arity = proto::arity_of<Expr>::value
>
@@ -33,10 +33,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 2>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 2>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1;
             typedef
                 typename boost::result_of<
                     child1(
@@ -52,10 +52,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 3>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 3>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2;
             typedef
                 typename boost::result_of<
                     child1(
@@ -71,10 +71,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 4>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 4>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3;
             typedef
                 typename boost::result_of<
                     child1(
@@ -90,10 +90,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 5>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 5>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4;
             typedef
                 typename boost::result_of<
                     child1(
@@ -109,10 +109,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 6>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 6>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5;
             typedef
                 typename boost::result_of<
                     child1(
@@ -128,10 +128,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 7>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 7>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6;
             typedef
                 typename boost::result_of<
                     child1(
@@ -147,10 +147,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 8>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 8>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7;
             typedef
                 typename boost::result_of<
                     child1(
@@ -166,10 +166,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 9>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 9>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8;
             typedef
                 typename boost::result_of<
                     child1(
@@ -185,10 +185,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 10>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 10>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9;
             typedef
                 typename boost::result_of<
                     child1(
@@ -204,10 +204,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 11>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 11>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10;
             typedef
                 typename boost::result_of<
                     child1(
@@ -223,10 +223,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 12>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 12>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11;
             typedef
                 typename boost::result_of<
                     child1(
@@ -242,10 +242,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 13>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 13>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12;
             typedef
                 typename boost::result_of<
                     child1(
@@ -261,10 +261,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 14>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 14>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13;
             typedef
                 typename boost::result_of<
                     child1(
@@ -280,10 +280,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 15>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 15>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14;
             typedef
                 typename boost::result_of<
                     child1(
@@ -299,10 +299,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 16>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 16>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15;
             typedef
                 typename boost::result_of<
                     child1(
@@ -318,10 +318,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 17>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 17>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16;
             typedef
                 typename boost::result_of<
                     child1(
@@ -337,10 +337,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 18>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 18>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17;
             typedef
                 typename boost::result_of<
                     child1(
@@ -356,10 +356,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 19>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 19>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18;
             typedef
                 typename boost::result_of<
                     child1(
@@ -375,10 +375,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 20>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 20>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19;
             typedef
                 typename boost::result_of<
                     child1(
@@ -394,10 +394,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 21>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 21>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20;
             typedef
                 typename boost::result_of<
                     child1(
@@ -413,10 +413,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 22>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 22>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21;
             typedef
                 typename boost::result_of<
                     child1(
@@ -432,10 +432,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 23>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 23>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22;
             typedef
                 typename boost::result_of<
                     child1(
@@ -451,10 +451,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 24>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 24>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23;
             typedef
                 typename boost::result_of<
                     child1(
@@ -470,10 +470,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 25>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 25>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24;
             typedef
                 typename boost::result_of<
                     child1(
@@ -489,10 +489,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 26>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 26>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25;
             typedef
                 typename boost::result_of<
                     child1(
@@ -508,10 +508,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 27>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 27>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26;
             typedef
                 typename boost::result_of<
                     child1(
@@ -527,10 +527,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 28>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 28>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27;
             typedef
                 typename boost::result_of<
                     child1(
@@ -546,10 +546,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 29>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 29>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28;
             typedef
                 typename boost::result_of<
                     child1(
@@ -565,10 +565,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 30>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 30>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29;
             typedef
                 typename boost::result_of<
                     child1(
@@ -584,21 +584,21 @@
         template<typename Sig>
         struct result;
         
- template <typename This, typename Env, typename Expr>
- struct result<This(Env, Expr const &)>
- : result<This(Env const &, Expr const &)>
+ template <typename This, typename Context, typename Expr>
+ struct result<This(Context, Expr const &)>
+ : result<This(Context const &, Expr const &)>
         {};
- template <typename This, typename Env, typename Expr>
- struct result<This(Env &, Expr const &)>
- : result_of::mem_fun_ptr_eval<Env, Expr>
+ template <typename This, typename Context, typename Expr>
+ struct result<This(Context &, Expr const &)>
+ : result_of::mem_fun_ptr_eval<Context, Expr>
         {};
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
- operator()(Env & env, Expr const & expr) const
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
+ operator()(Context & ctx, Expr const & expr) const
         {
             return
                 this->evaluate(
- env
+ ctx
                   , expr
                   , typename proto::arity_of<Expr>::type()
                 );
@@ -612,18 +612,18 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<2>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
                     
                 );
@@ -637,20 +637,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<3>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx)
                 );
         }
         
@@ -662,20 +662,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<4>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx)
                 );
         }
         
@@ -687,20 +687,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<5>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx)
                 );
         }
         
@@ -712,20 +712,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<6>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx)
                 );
         }
         
@@ -737,20 +737,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<7>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx)
                 );
         }
         
@@ -762,20 +762,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<8>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx)
                 );
         }
         
@@ -787,20 +787,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<9>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx)
                 );
         }
         
@@ -812,20 +812,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<10>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx)
                 );
         }
         
@@ -837,20 +837,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<11>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx)
                 );
         }
         
@@ -862,20 +862,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<12>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx)
                 );
         }
         
@@ -887,20 +887,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<13>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx)
                 );
         }
         
@@ -912,20 +912,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<14>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx)
                 );
         }
         
@@ -937,20 +937,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<15>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx)
                 );
         }
         
@@ -962,20 +962,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<16>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx)
                 );
         }
         
@@ -987,20 +987,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<17>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx)
                 );
         }
         
@@ -1012,20 +1012,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<18>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx)
                 );
         }
         
@@ -1037,20 +1037,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<19>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx)
                 );
         }
         
@@ -1062,20 +1062,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<20>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx)
                 );
         }
         
@@ -1087,20 +1087,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<21>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx)
                 );
         }
         
@@ -1112,20 +1112,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<22>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx)
                 );
         }
         
@@ -1137,20 +1137,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<23>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx)
                 );
         }
         
@@ -1162,20 +1162,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<24>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx)
                 );
         }
         
@@ -1187,20 +1187,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<25>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx)
                 );
         }
         
@@ -1212,20 +1212,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<26>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx)
                 );
         }
         
@@ -1237,20 +1237,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<27>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx)
                 );
         }
         
@@ -1262,20 +1262,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<28>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx)
                 );
         }
         
@@ -1287,20 +1287,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<29>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx)
                 );
         }
         
@@ -1312,20 +1312,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<30>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx)
                 );
         }
         

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_40.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -21,7 +21,7 @@
     namespace result_of
     {
         template <
- typename Env
+ typename Context
           , typename Expr
           , long Arity = proto::arity_of<Expr>::value
>
@@ -33,10 +33,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 2>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 2>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1;
             typedef
                 typename boost::result_of<
                     child1(
@@ -52,10 +52,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 3>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 3>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2;
             typedef
                 typename boost::result_of<
                     child1(
@@ -71,10 +71,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 4>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 4>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3;
             typedef
                 typename boost::result_of<
                     child1(
@@ -90,10 +90,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 5>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 5>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4;
             typedef
                 typename boost::result_of<
                     child1(
@@ -109,10 +109,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 6>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 6>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5;
             typedef
                 typename boost::result_of<
                     child1(
@@ -128,10 +128,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 7>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 7>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6;
             typedef
                 typename boost::result_of<
                     child1(
@@ -147,10 +147,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 8>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 8>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7;
             typedef
                 typename boost::result_of<
                     child1(
@@ -166,10 +166,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 9>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 9>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8;
             typedef
                 typename boost::result_of<
                     child1(
@@ -185,10 +185,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 10>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 10>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9;
             typedef
                 typename boost::result_of<
                     child1(
@@ -204,10 +204,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 11>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 11>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10;
             typedef
                 typename boost::result_of<
                     child1(
@@ -223,10 +223,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 12>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 12>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11;
             typedef
                 typename boost::result_of<
                     child1(
@@ -242,10 +242,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 13>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 13>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12;
             typedef
                 typename boost::result_of<
                     child1(
@@ -261,10 +261,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 14>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 14>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13;
             typedef
                 typename boost::result_of<
                     child1(
@@ -280,10 +280,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 15>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 15>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14;
             typedef
                 typename boost::result_of<
                     child1(
@@ -299,10 +299,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 16>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 16>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15;
             typedef
                 typename boost::result_of<
                     child1(
@@ -318,10 +318,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 17>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 17>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16;
             typedef
                 typename boost::result_of<
                     child1(
@@ -337,10 +337,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 18>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 18>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17;
             typedef
                 typename boost::result_of<
                     child1(
@@ -356,10 +356,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 19>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 19>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18;
             typedef
                 typename boost::result_of<
                     child1(
@@ -375,10 +375,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 20>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 20>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19;
             typedef
                 typename boost::result_of<
                     child1(
@@ -394,10 +394,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 21>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 21>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20;
             typedef
                 typename boost::result_of<
                     child1(
@@ -413,10 +413,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 22>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 22>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21;
             typedef
                 typename boost::result_of<
                     child1(
@@ -432,10 +432,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 23>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 23>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22;
             typedef
                 typename boost::result_of<
                     child1(
@@ -451,10 +451,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 24>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 24>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23;
             typedef
                 typename boost::result_of<
                     child1(
@@ -470,10 +470,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 25>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 25>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24;
             typedef
                 typename boost::result_of<
                     child1(
@@ -489,10 +489,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 26>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 26>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25;
             typedef
                 typename boost::result_of<
                     child1(
@@ -508,10 +508,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 27>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 27>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26;
             typedef
                 typename boost::result_of<
                     child1(
@@ -527,10 +527,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 28>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 28>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27;
             typedef
                 typename boost::result_of<
                     child1(
@@ -546,10 +546,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 29>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 29>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28;
             typedef
                 typename boost::result_of<
                     child1(
@@ -565,10 +565,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 30>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 30>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29;
             typedef
                 typename boost::result_of<
                     child1(
@@ -584,10 +584,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 31>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 31>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30;
             typedef
                 typename boost::result_of<
                     child1(
@@ -603,10 +603,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 32>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 32>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31;
             typedef
                 typename boost::result_of<
                     child1(
@@ -622,10 +622,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 33>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 33>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32;
             typedef
                 typename boost::result_of<
                     child1(
@@ -641,10 +641,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 34>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 34>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33;
             typedef
                 typename boost::result_of<
                     child1(
@@ -660,10 +660,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 35>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 35>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34;
             typedef
                 typename boost::result_of<
                     child1(
@@ -679,10 +679,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 36>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 36>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35;
             typedef
                 typename boost::result_of<
                     child1(
@@ -698,10 +698,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 37>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 37>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36;
             typedef
                 typename boost::result_of<
                     child1(
@@ -717,10 +717,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 38>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 38>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37;
             typedef
                 typename boost::result_of<
                     child1(
@@ -736,10 +736,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 39>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 39>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38;
             typedef
                 typename boost::result_of<
                     child1(
@@ -755,10 +755,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 40>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 40>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Env , int >::result_type child39;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39;
             typedef
                 typename boost::result_of<
                     child1(
@@ -774,21 +774,21 @@
         template<typename Sig>
         struct result;
         
- template <typename This, typename Env, typename Expr>
- struct result<This(Env, Expr const &)>
- : result<This(Env const &, Expr const &)>
+ template <typename This, typename Context, typename Expr>
+ struct result<This(Context, Expr const &)>
+ : result<This(Context const &, Expr const &)>
         {};
- template <typename This, typename Env, typename Expr>
- struct result<This(Env &, Expr const &)>
- : result_of::mem_fun_ptr_eval<Env, Expr>
+ template <typename This, typename Context, typename Expr>
+ struct result<This(Context &, Expr const &)>
+ : result_of::mem_fun_ptr_eval<Context, Expr>
         {};
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
- operator()(Env & env, Expr const & expr) const
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
+ operator()(Context & ctx, Expr const & expr) const
         {
             return
                 this->evaluate(
- env
+ ctx
                   , expr
                   , typename proto::arity_of<Expr>::type()
                 );
@@ -802,18 +802,18 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<2>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
                     
                 );
@@ -827,20 +827,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<3>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx)
                 );
         }
         
@@ -852,20 +852,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<4>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx)
                 );
         }
         
@@ -877,20 +877,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<5>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx)
                 );
         }
         
@@ -902,20 +902,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<6>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx)
                 );
         }
         
@@ -927,20 +927,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<7>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx)
                 );
         }
         
@@ -952,20 +952,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<8>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx)
                 );
         }
         
@@ -977,20 +977,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<9>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx)
                 );
         }
         
@@ -1002,20 +1002,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<10>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx)
                 );
         }
         
@@ -1027,20 +1027,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<11>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx)
                 );
         }
         
@@ -1052,20 +1052,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<12>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx)
                 );
         }
         
@@ -1077,20 +1077,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<13>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx)
                 );
         }
         
@@ -1102,20 +1102,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<14>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx)
                 );
         }
         
@@ -1127,20 +1127,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<15>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx)
                 );
         }
         
@@ -1152,20 +1152,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<16>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx)
                 );
         }
         
@@ -1177,20 +1177,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<17>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx)
                 );
         }
         
@@ -1202,20 +1202,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<18>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx)
                 );
         }
         
@@ -1227,20 +1227,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<19>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx)
                 );
         }
         
@@ -1252,20 +1252,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<20>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx)
                 );
         }
         
@@ -1277,20 +1277,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<21>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx)
                 );
         }
         
@@ -1302,20 +1302,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<22>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx)
                 );
         }
         
@@ -1327,20 +1327,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<23>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx)
                 );
         }
         
@@ -1352,20 +1352,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<24>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx)
                 );
         }
         
@@ -1377,20 +1377,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<25>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx)
                 );
         }
         
@@ -1402,20 +1402,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<26>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx)
                 );
         }
         
@@ -1427,20 +1427,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<27>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx)
                 );
         }
         
@@ -1452,20 +1452,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<28>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx)
                 );
         }
         
@@ -1477,20 +1477,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<29>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx)
                 );
         }
         
@@ -1502,20 +1502,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<30>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx)
                 );
         }
         
@@ -1527,20 +1527,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<31>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx)
                 );
         }
         
@@ -1552,20 +1552,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<32>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx)
                 );
         }
         
@@ -1577,20 +1577,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<33>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx)
                 );
         }
         
@@ -1602,20 +1602,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<34>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx)
                 );
         }
         
@@ -1627,20 +1627,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<35>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx)
                 );
         }
         
@@ -1652,20 +1652,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<36>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx)
                 );
         }
         
@@ -1677,20 +1677,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<37>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx)
                 );
         }
         
@@ -1702,20 +1702,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<38>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx)
                 );
         }
         
@@ -1727,20 +1727,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<39>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx)
                 );
         }
         
@@ -1752,20 +1752,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<40>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env) , eval(proto::child_c< 39 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx)
                 );
         }
         

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_50.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -21,7 +21,7 @@
     namespace result_of
     {
         template <
- typename Env
+ typename Context
           , typename Expr
           , long Arity = proto::arity_of<Expr>::value
>
@@ -33,10 +33,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 2>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 2>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1;
             typedef
                 typename boost::result_of<
                     child1(
@@ -52,10 +52,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 3>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 3>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2;
             typedef
                 typename boost::result_of<
                     child1(
@@ -71,10 +71,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 4>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 4>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3;
             typedef
                 typename boost::result_of<
                     child1(
@@ -90,10 +90,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 5>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 5>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4;
             typedef
                 typename boost::result_of<
                     child1(
@@ -109,10 +109,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 6>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 6>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5;
             typedef
                 typename boost::result_of<
                     child1(
@@ -128,10 +128,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 7>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 7>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6;
             typedef
                 typename boost::result_of<
                     child1(
@@ -147,10 +147,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 8>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 8>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7;
             typedef
                 typename boost::result_of<
                     child1(
@@ -166,10 +166,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 9>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 9>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8;
             typedef
                 typename boost::result_of<
                     child1(
@@ -185,10 +185,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 10>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 10>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9;
             typedef
                 typename boost::result_of<
                     child1(
@@ -204,10 +204,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 11>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 11>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10;
             typedef
                 typename boost::result_of<
                     child1(
@@ -223,10 +223,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 12>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 12>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11;
             typedef
                 typename boost::result_of<
                     child1(
@@ -242,10 +242,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 13>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 13>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12;
             typedef
                 typename boost::result_of<
                     child1(
@@ -261,10 +261,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 14>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 14>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13;
             typedef
                 typename boost::result_of<
                     child1(
@@ -280,10 +280,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 15>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 15>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14;
             typedef
                 typename boost::result_of<
                     child1(
@@ -299,10 +299,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 16>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 16>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15;
             typedef
                 typename boost::result_of<
                     child1(
@@ -318,10 +318,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 17>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 17>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16;
             typedef
                 typename boost::result_of<
                     child1(
@@ -337,10 +337,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 18>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 18>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17;
             typedef
                 typename boost::result_of<
                     child1(
@@ -356,10 +356,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 19>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 19>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18;
             typedef
                 typename boost::result_of<
                     child1(
@@ -375,10 +375,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 20>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 20>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19;
             typedef
                 typename boost::result_of<
                     child1(
@@ -394,10 +394,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 21>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 21>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20;
             typedef
                 typename boost::result_of<
                     child1(
@@ -413,10 +413,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 22>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 22>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21;
             typedef
                 typename boost::result_of<
                     child1(
@@ -432,10 +432,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 23>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 23>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22;
             typedef
                 typename boost::result_of<
                     child1(
@@ -451,10 +451,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 24>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 24>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23;
             typedef
                 typename boost::result_of<
                     child1(
@@ -470,10 +470,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 25>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 25>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24;
             typedef
                 typename boost::result_of<
                     child1(
@@ -489,10 +489,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 26>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 26>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25;
             typedef
                 typename boost::result_of<
                     child1(
@@ -508,10 +508,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 27>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 27>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26;
             typedef
                 typename boost::result_of<
                     child1(
@@ -527,10 +527,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 28>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 28>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27;
             typedef
                 typename boost::result_of<
                     child1(
@@ -546,10 +546,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 29>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 29>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28;
             typedef
                 typename boost::result_of<
                     child1(
@@ -565,10 +565,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 30>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 30>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29;
             typedef
                 typename boost::result_of<
                     child1(
@@ -584,10 +584,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 31>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 31>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30;
             typedef
                 typename boost::result_of<
                     child1(
@@ -603,10 +603,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 32>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 32>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31;
             typedef
                 typename boost::result_of<
                     child1(
@@ -622,10 +622,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 33>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 33>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32;
             typedef
                 typename boost::result_of<
                     child1(
@@ -641,10 +641,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 34>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 34>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33;
             typedef
                 typename boost::result_of<
                     child1(
@@ -660,10 +660,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 35>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 35>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34;
             typedef
                 typename boost::result_of<
                     child1(
@@ -679,10 +679,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 36>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 36>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35;
             typedef
                 typename boost::result_of<
                     child1(
@@ -698,10 +698,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 37>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 37>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36;
             typedef
                 typename boost::result_of<
                     child1(
@@ -717,10 +717,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 38>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 38>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37;
             typedef
                 typename boost::result_of<
                     child1(
@@ -736,10 +736,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 39>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 39>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38;
             typedef
                 typename boost::result_of<
                     child1(
@@ -755,10 +755,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 40>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 40>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Env , int >::result_type child39;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39;
             typedef
                 typename boost::result_of<
                     child1(
@@ -774,10 +774,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 41>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 41>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Env , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Env , int >::result_type child40;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0;
             typedef
                 typename boost::result_of<
                     child1(
@@ -793,10 +793,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 42>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 42>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Env , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Env , int >::result_type child40; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Env , int >::result_type child41;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41;
             typedef
                 typename boost::result_of<
                     child1(
@@ -812,10 +812,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 43>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 43>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Env , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Env , int >::result_type child40; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Env , int >::result_type child41; typedef typename evaluator::impl< typena
me proto::result_of::child_c<Expr, 42>::type , Env , int >::result_type child42;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42;
             typedef
                 typename boost::result_of<
                     child1(
@@ -831,10 +831,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 44>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 44>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Env , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Env , int >::result_type child40; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Env , int >::result_type child41; typedef typename evaluator::impl< typena
me proto::result_of::child_c<Expr, 42>::type , Env , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Env , int >::result_type child43;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43;
             typedef
                 typename boost::result_of<
                     child1(
@@ -850,10 +850,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 45>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 45>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Env , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Env , int >::result_type child40; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Env , int >::result_type child41; typedef typename evaluator::impl< typena
me proto::result_of::child_c<Expr, 42>::type , Env , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Env , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Env , int >::result_type child44;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Context , int >::result_type child44;
             typedef
                 typename boost::result_of<
                     child1(
@@ -869,10 +869,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 46>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 46>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Env , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Env , int >::result_type child40; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Env , int >::result_type child41; typedef typename evaluator::impl< typena
me proto::result_of::child_c<Expr, 42>::type , Env , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Env , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Env , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Env , int >::result_type child45;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Context , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Context , int >::result_type child45;
             typedef
                 typename boost::result_of<
                     child1(
@@ -888,10 +888,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 47>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 47>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Env , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Env , int >::result_type child40; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Env , int >::result_type child41; typedef typename evaluator::impl< typena
me proto::result_of::child_c<Expr, 42>::type , Env , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Env , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Env , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Env , int >::result_type child45; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 46>::type , Env , int >::result_type child46;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Context , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Context , int >::result_type child45; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 46>::type , Context , int >::result_type child46;
             typedef
                 typename boost::result_of<
                     child1(
@@ -907,10 +907,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 48>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 48>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Env , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Env , int >::result_type child40; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Env , int >::result_type child41; typedef typename evaluator::impl< typena
me proto::result_of::child_c<Expr, 42>::type , Env , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Env , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Env , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Env , int >::result_type child45; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 46>::type , Env , int >::result_type child46; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 47>::type , Env , int >::result_type child47;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Context , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Context , int >::result_type child45; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 46>::type , Context , int >::result_type child46; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 47>::type , Context , int >::result_type child47;
             typedef
                 typename boost::result_of<
                     child1(
@@ -926,10 +926,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 49>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 49>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Env , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Env , int >::result_type child40; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Env , int >::result_type child41; typedef typename evaluator::impl< typena
me proto::result_of::child_c<Expr, 42>::type , Env , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Env , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Env , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Env , int >::result_type child45; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 46>::type , Env , int >::result_type child46; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 47>::type , Env , int >::result_type child47; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 48>::type , Env , int >::result_type child48;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Context , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Context , int >::result_type child45; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 46>::type , Context , int >::result_type child46; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 47>::type , Context , int >::result_type child47; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 48>::type , Context , int >::result_type child48;
             typedef
                 typename boost::result_of<
                     child1(
@@ -945,10 +945,10 @@
     
     
     
- template <typename Env, typename Expr>
- struct mem_fun_ptr_eval<Env, Expr, 50>
+ template <typename Context, typename Expr>
+ struct mem_fun_ptr_eval<Context, Expr, 50>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Env , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Env , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Env , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Env , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Env , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Env , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Env , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Env , int >::result_type child7; typedef typename evaluator::impl< typename proto::result_o
f::child_c<Expr, 8>::type , Env , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Env , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Env , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Env , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Env , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Env , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Env , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Env , int >::result_type child15; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 16>::type , Env , int >::result_type child
16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Env , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Env , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Env , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Env , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Env , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Env , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Env , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 24>::type , Env , int >::result_type child24; typedef typename evaluator::impl< typename proto::r
esult_of::child_c<Expr, 25>::type , Env , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Env , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Env , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Env , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Env , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Env , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Env , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Env , int >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Env , int >::result
_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Env , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Env , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Env , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Env , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Env , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Env , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Env , int >::result_type child40; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Env , int >::result_type child41; typedef typename evaluator::impl< typena
me proto::result_of::child_c<Expr, 42>::type , Env , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Env , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Env , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Env , int >::result_type child45; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 46>::type , Env , int >::result_type child46; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 47>::type , Env , int >::result_type child47; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 48>::type , Env , int >::result_type child48; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 49>::type , Env , int >::result_type child49;
+ typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Context , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Context , int >::result_type child45; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 46>::type , Context , int >::result_type child46; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 47>::type , Context , int >::result_type child47; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 48>::type , Context , int >::result_type child48; typedef typename eva
luator::impl< typename proto::result_of::child_c<Expr, 49>::type , Context , int >::result_type child49;
             typedef
                 typename boost::result_of<
                     child1(
@@ -964,21 +964,21 @@
         template<typename Sig>
         struct result;
         
- template <typename This, typename Env, typename Expr>
- struct result<This(Env, Expr const &)>
- : result<This(Env const &, Expr const &)>
+ template <typename This, typename Context, typename Expr>
+ struct result<This(Context, Expr const &)>
+ : result<This(Context const &, Expr const &)>
         {};
- template <typename This, typename Env, typename Expr>
- struct result<This(Env &, Expr const &)>
- : result_of::mem_fun_ptr_eval<Env, Expr>
+ template <typename This, typename Context, typename Expr>
+ struct result<This(Context &, Expr const &)>
+ : result_of::mem_fun_ptr_eval<Context, Expr>
         {};
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
- operator()(Env & env, Expr const & expr) const
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
+ operator()(Context & ctx, Expr const & expr) const
         {
             return
                 this->evaluate(
- env
+ ctx
                   , expr
                   , typename proto::arity_of<Expr>::type()
                 );
@@ -992,18 +992,18 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<2>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
                     
                 );
@@ -1017,20 +1017,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<3>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx)
                 );
         }
         
@@ -1042,20 +1042,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<4>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx)
                 );
         }
         
@@ -1067,20 +1067,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<5>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx)
                 );
         }
         
@@ -1092,20 +1092,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<6>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx)
                 );
         }
         
@@ -1117,20 +1117,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<7>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx)
                 );
         }
         
@@ -1142,20 +1142,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<8>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx)
                 );
         }
         
@@ -1167,20 +1167,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<9>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx)
                 );
         }
         
@@ -1192,20 +1192,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<10>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx)
                 );
         }
         
@@ -1217,20 +1217,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<11>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx)
                 );
         }
         
@@ -1242,20 +1242,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<12>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx)
                 );
         }
         
@@ -1267,20 +1267,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<13>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx)
                 );
         }
         
@@ -1292,20 +1292,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<14>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx)
                 );
         }
         
@@ -1317,20 +1317,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<15>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx)
                 );
         }
         
@@ -1342,20 +1342,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<16>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx)
                 );
         }
         
@@ -1367,20 +1367,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<17>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx)
                 );
         }
         
@@ -1392,20 +1392,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<18>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx)
                 );
         }
         
@@ -1417,20 +1417,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<19>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx)
                 );
         }
         
@@ -1442,20 +1442,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<20>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx)
                 );
         }
         
@@ -1467,20 +1467,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<21>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx)
                 );
         }
         
@@ -1492,20 +1492,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<22>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx)
                 );
         }
         
@@ -1517,20 +1517,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<23>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx)
                 );
         }
         
@@ -1542,20 +1542,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<24>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx)
                 );
         }
         
@@ -1567,20 +1567,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<25>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx)
                 );
         }
         
@@ -1592,20 +1592,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<26>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx)
                 );
         }
         
@@ -1617,20 +1617,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<27>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx)
                 );
         }
         
@@ -1642,20 +1642,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<28>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx)
                 );
         }
         
@@ -1667,20 +1667,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<29>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx)
                 );
         }
         
@@ -1692,20 +1692,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<30>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx)
                 );
         }
         
@@ -1717,20 +1717,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<31>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx)
                 );
         }
         
@@ -1742,20 +1742,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<32>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx)
                 );
         }
         
@@ -1767,20 +1767,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<33>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx)
                 );
         }
         
@@ -1792,20 +1792,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<34>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx)
                 );
         }
         
@@ -1817,20 +1817,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<35>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx)
                 );
         }
         
@@ -1842,20 +1842,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<36>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx)
                 );
         }
         
@@ -1867,20 +1867,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<37>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx)
                 );
         }
         
@@ -1892,20 +1892,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<38>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx)
                 );
         }
         
@@ -1917,20 +1917,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<39>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx)
                 );
         }
         
@@ -1942,20 +1942,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<40>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env) , eval(proto::child_c< 39 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx)
                 );
         }
         
@@ -1967,20 +1967,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<41>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env) , eval(proto::child_c< 39 >(expr), env) , eval(proto::child_c< 40 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx) , eval(proto::child_c< 40 >(expr), ctx)
                 );
         }
         
@@ -1992,20 +1992,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<42>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env) , eval(proto::child_c< 39 >(expr), env) , eval(proto::child_c< 40 >(expr), env) , eval(proto::child_c< 41 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx) , eval(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx)
                 );
         }
         
@@ -2017,20 +2017,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<43>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env) , eval(proto::child_c< 39 >(expr), env) , eval(proto::child_c< 40 >(expr), env) , eval(proto::child_c< 41 >(expr), env) , eval(proto::child_c< 42 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx) , eval(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx)
                 );
         }
         
@@ -2042,20 +2042,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<44>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env) , eval(proto::child_c< 39 >(expr), env) , eval(proto::child_c< 40 >(expr), env) , eval(proto::child_c< 41 >(expr), env) , eval(proto::child_c< 42 >(expr), env) , eval(proto::child_c< 43 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx) , eval(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx)
                 );
         }
         
@@ -2067,20 +2067,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<45>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env) , eval(proto::child_c< 39 >(expr), env) , eval(proto::child_c< 40 >(expr), env) , eval(proto::child_c< 41 >(expr), env) , eval(proto::child_c< 42 >(expr), env) , eval(proto::child_c< 43 >(expr), env) , eval(proto::child_c< 44 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx) , eval(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx) , eval(proto::child_c< 44 >(expr), ctx)
                 );
         }
         
@@ -2092,20 +2092,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<46>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env) , eval(proto::child_c< 39 >(expr), env) , eval(proto::child_c< 40 >(expr), env) , eval(proto::child_c< 41 >(expr), env) , eval(proto::child_c< 42 >(expr), env) , eval(proto::child_c< 43 >(expr), env) , eval(proto::child_c< 44 >(expr), env) , eval(proto::child_c< 45 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx) , eval(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx) , eval(proto::child_c< 44 >(expr), ctx) , eval(proto::child_c< 45 >(expr), ctx)
                 );
         }
         
@@ -2117,20 +2117,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<47>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env) , eval(proto::child_c< 39 >(expr), env) , eval(proto::child_c< 40 >(expr), env) , eval(proto::child_c< 41 >(expr), env) , eval(proto::child_c< 42 >(expr), env) , eval(proto::child_c< 43 >(expr), env) , eval(proto::child_c< 44 >(expr), env) , eval(proto::child_c< 45 >(expr), env) , eval(proto::child_c< 46 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx) , eval(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx) , eval(proto::child_c< 44 >(expr), ctx) , eval(proto::child_c< 45 >(expr), ctx) , eval(proto::child_c< 46 >(expr), ctx)
                 );
         }
         
@@ -2142,20 +2142,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<48>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env) , eval(proto::child_c< 39 >(expr), env) , eval(proto::child_c< 40 >(expr), env) , eval(proto::child_c< 41 >(expr), env) , eval(proto::child_c< 42 >(expr), env) , eval(proto::child_c< 43 >(expr), env) , eval(proto::child_c< 44 >(expr), env) , eval(proto::child_c< 45 >(expr), env) , eval(proto::child_c< 46 >(expr), env) , eval(proto::child_c< 47 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx) , eval(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx) , eval(proto::child_c< 44 >(expr), ctx) , eval(proto::child_c< 45 >(expr), ctx) , eval(proto::child_c< 46 >(expr), ctx) , eval(proto::child_c< 47 >(expr), ctx)
                 );
         }
         
@@ -2167,20 +2167,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<49>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env) , eval(proto::child_c< 39 >(expr), env) , eval(proto::child_c< 40 >(expr), env) , eval(proto::child_c< 41 >(expr), env) , eval(proto::child_c< 42 >(expr), env) , eval(proto::child_c< 43 >(expr), env) , eval(proto::child_c< 44 >(expr), env) , eval(proto::child_c< 45 >(expr), env) , eval(proto::child_c< 46 >(expr), env) , eval(proto::child_c< 47 >(expr), env) , eval(proto::child_c< 48 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx) , eval(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx) , eval(proto::child_c< 44 >(expr), ctx) , eval(proto::child_c< 45 >(expr), ctx) , eval(proto::child_c< 46 >(expr), ctx) , eval(proto::child_c< 47 >(expr), ctx) , eval(proto::child_c< 48 >(expr), ctx)
                 );
         }
         
@@ -2192,20 +2192,20 @@
     
     
             
- template <typename Env, typename Expr>
- typename result_of::mem_fun_ptr_eval<Env, Expr>::type
+ template <typename Context, typename Expr>
+ typename result_of::mem_fun_ptr_eval<Context, Expr>::type
         evaluate(
- Env & env
+ Context & ctx
           , Expr const & expr
           , mpl::long_<50>
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), env))
- ->*eval(proto::child_c<1>(expr), env)
+ get_pointer(eval(proto::child_c<0>(expr), ctx))
+ ->*eval(proto::child_c<1>(expr), ctx)
                 )(
- eval(proto::child_c< 2 >(expr), env) , eval(proto::child_c< 3 >(expr), env) , eval(proto::child_c< 4 >(expr), env) , eval(proto::child_c< 5 >(expr), env) , eval(proto::child_c< 6 >(expr), env) , eval(proto::child_c< 7 >(expr), env) , eval(proto::child_c< 8 >(expr), env) , eval(proto::child_c< 9 >(expr), env) , eval(proto::child_c< 10 >(expr), env) , eval(proto::child_c< 11 >(expr), env) , eval(proto::child_c< 12 >(expr), env) , eval(proto::child_c< 13 >(expr), env) , eval(proto::child_c< 14 >(expr), env) , eval(proto::child_c< 15 >(expr), env) , eval(proto::child_c< 16 >(expr), env) , eval(proto::child_c< 17 >(expr), env) , eval(proto::child_c< 18 >(expr), env) , eval(proto::child_c< 19 >(expr), env) , eval(proto::child_c< 20 >(expr), env) , eval(proto::child_c< 21 >(expr), env) , eval(proto::child_c< 22 >(expr), env) , eval(proto::child_c< 23 >(expr), env) , eval(proto::child_c< 24 >(expr), env) , eval(proto::child_c< 25 >(expr), env) , eval(proto::child_c< 26 >(expr), env) , eval(proto
::child_c< 27 >(expr), env) , eval(proto::child_c< 28 >(expr), env) , eval(proto::child_c< 29 >(expr), env) , eval(proto::child_c< 30 >(expr), env) , eval(proto::child_c< 31 >(expr), env) , eval(proto::child_c< 32 >(expr), env) , eval(proto::child_c< 33 >(expr), env) , eval(proto::child_c< 34 >(expr), env) , eval(proto::child_c< 35 >(expr), env) , eval(proto::child_c< 36 >(expr), env) , eval(proto::child_c< 37 >(expr), env) , eval(proto::child_c< 38 >(expr), env) , eval(proto::child_c< 39 >(expr), env) , eval(proto::child_c< 40 >(expr), env) , eval(proto::child_c< 41 >(expr), env) , eval(proto::child_c< 42 >(expr), env) , eval(proto::child_c< 43 >(expr), env) , eval(proto::child_c< 44 >(expr), env) , eval(proto::child_c< 45 >(expr), env) , eval(proto::child_c< 46 >(expr), env) , eval(proto::child_c< 47 >(expr), env) , eval(proto::child_c< 48 >(expr), env) , eval(proto::child_c< 49 >(expr), env)
+ eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx) , eval(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx) , eval(proto::child_c< 44 >(expr), ctx) , eval(proto::child_c< 45 >(expr), ctx) , eval(proto::child_c< 46 >(expr), ctx) , eval(proto::child_c< 47 >(expr), ctx) , eval(proto::child_c< 48 >(expr), ctx) , eval(proto::child_c< 49 >(expr), ctx)
                 );
         }
         

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -65,7 +65,7 @@
                 typename proto::detail::uncvref<
                     typename result_of::env<Context>::type
>::type
- args_type;
+ env_type;
 
             typedef
                 typename proto::detail::uncvref<
@@ -74,10 +74,6 @@
                 actions_type;
 
             typedef
- typename result_of::context<args_type, actions_type>::type
- ctx_type;
-
- typedef
                 typename proto::detail::uncvref<Locals>::type
                 locals_type;
 
@@ -86,15 +82,15 @@
                 outer_env_type;
 
             typedef
- scoped_environment<ctx_type, outer_env_type const, locals_type const>
+ scoped_environment<env_type, outer_env_type const, locals_type const>
                 scoped_env;
 
             typedef
                 typename result_of::context<scoped_env, actions_type&>::type
- new_ctx_type;
+ ctx_type;
 
             typedef
- typename evaluator::impl<Lambda const &, new_ctx_type&, int>::result_type
+ typename evaluator::impl<Lambda const &, ctx_type&, int>::result_type
                 type;
         };
         
@@ -118,7 +114,7 @@
                 typename proto::detail::uncvref<
                     typename result_of::env<Context>::type
>::type
- args_type;
+ env_type;
 
             typedef
                 typename proto::detail::uncvref<
@@ -127,10 +123,6 @@
                 actions_type;
 
             typedef
- fusion::vector2<args_type, actions_type>
- ctx_type;
-
- typedef
                 typename proto::detail::uncvref<Locals>::type
                 locals_type;
 
@@ -139,10 +131,11 @@
                 outer_env_type;
 
             typedef
- scoped_environment<ctx_type, OuterEnv const, locals_type const>
+ scoped_environment<env_type, OuterEnv const, locals_type const>
                 scoped_env_type;
 
- ctx_type e(env(ctx), actions(ctx));
+
+ env_type e(env(ctx));
 
             scoped_env_type
                 scoped_env(
@@ -151,7 +144,7 @@
                   , locals
                 );
 
- fusion::vector2<scoped_env_type, actions_type>
+ typename result_of::context<scoped_env_type, actions_type&>::type
                 new_ctx(scoped_env, actions(ctx));
             return eval(lambda, new_ctx);
         }
@@ -179,11 +172,12 @@
>
           , evaluator(
                 proto::_child_c<2>
- , fusion::vector2<
- mpl::true_
- , detail::scope_is_nullary_actions
- >()
- , int()
+ , _context(
+ proto::_
+ , mpl::true_()
+ , detail::scope_is_nullary_actions()
+ )
+ , int()
             )
>
     {};
@@ -231,7 +225,11 @@
                     rule::local_var_def_list
                   , meta_grammar
>
- , detail::local_var_def_is_nullary(proto::_child_c<0>, _context, int())// mpl::true_()//evaluator(proto::_child_c<1>, _context)
+ , detail::local_var_def_is_nullary(
+ proto::_child_c<0>
+ , _context
+ , int()
+ )
>
>
     {};
@@ -254,21 +252,11 @@
                 typename proto::detail::uncvref<
                     typename result_of::env<Context>::type
>::type
- args_type;
-
- typedef
- typename proto::detail::uncvref<
- typename result_of::actions<Context>::type
- >::type
- actions_type;
-
- typedef
- fusion::vector2<args_type, actions_type>
- outer_ctx_type;
+ env_type;
 
             typedef
                 typename expression::lambda<
- outer_ctx_type
+ env_type
                   , mpl::void_
                   , typename proto::detail::uncvref<Lambda>::type
>::type
@@ -292,21 +280,11 @@
                 typename proto::detail::uncvref<
                     typename result_of::env<Context>::type
>::type
- args_type;
-
- typedef
- typename proto::detail::uncvref<
- typename result_of::actions<Context>::type
- >::type
- actions_type;
+ env_type;
 
             typedef
- fusion::vector2<args_type, actions_type>
- outer_ctx_type;
-
- typedef
                 typename expression::lambda<
- outer_ctx_type
+ env_type
                   , locals_type
                   , typename proto::detail::uncvref<Lambda>::type
>::type const
@@ -321,26 +299,13 @@
                 typename proto::detail::uncvref<
                     typename result_of::env<Context>::type
>::type
- args_type;
-
- typedef
- typename proto::detail::uncvref<
- typename result_of::actions<Context>::type
- >::type
- actions_type;
-
- typedef
- fusion::vector2<args_type, actions_type>
- outer_ctx_type;
-
- outer_ctx_type
- outer_ctx(fusion::at_c<0>(ctx), fusion::at_c<1>(ctx));
+ env_type;
 
             mpl::void_ t;
             return
                 expression::
- lambda<outer_ctx_type, mpl::void_, Lambda>::
- make(outer_ctx, t, lambda);
+ lambda<env_type, mpl::void_, Lambda>::
+ make(env(ctx), t, lambda);
         }
 
         template <
@@ -373,25 +338,12 @@
                 typename proto::detail::uncvref<
                     typename result_of::env<Context>::type
>::type
- args_type;
-
- typedef
- typename proto::detail::uncvref<
- typename result_of::actions<Context>::type
- >::type
- actions_type;
-
- typedef
- fusion::vector2<args_type, actions_type>
- outer_ctx_type;
-
- outer_ctx_type
- outer_ctx(fusion::at_c<0>(ctx), fusion::at_c<1>(ctx));
+ env_type;
 
             return
                 expression::
- lambda<outer_ctx_type, locals_type, Lambda>::
- make(outer_ctx, l, lambda);
+ lambda<env_type, locals_type, Lambda>::
+ make(env(ctx), l, lambda);
         }
     };
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -51,14 +51,14 @@
             typedef
                 typename evaluator::impl<
                     Let const &
- , fusion::vector2<
+ , typename result_of::context<
                         scoped_environment<
- Context
- , Context
+ typename result_of::env<Context>::type
+ , typename result_of::env<Context>::type
                           , locals_type
>
                       , actions_type
- >
+ >::type
                   , int
>::result_type
                 type;
@@ -70,6 +70,12 @@
         {
             typedef
                 typename proto::detail::uncvref<
+ typename result_of::env<Context>::type
+ >::type
+ env_type;
+
+ typedef
+ typename proto::detail::uncvref<
                     typename result_of::actions<Context>::type
>::type
                 actions_type;
@@ -84,6 +90,8 @@
>::type
>::type
                 locals_type;
+
+ typedef scoped_environment<env_type, env_type, locals_type> scoped_env_type;
 
             locals_type l =
                    rule::local_var_def_list()(
@@ -91,17 +99,18 @@
                     , ctx
                     );
 
- scoped_environment<Context, Context, locals_type&>
+
+ scoped_env_type
                 scoped_env(
- ctx
- , ctx
+ env(ctx)
+ , env(ctx)
                   , l
                 );
 
- fusion::vector2<
- scoped_environment<Context, Context, locals_type &> &
+ typename result_of::context<
+ scoped_env_type &
               , actions_type
- > new_ctx(scoped_env, actions(ctx));
+ >::type new_ctx(scoped_env, actions(ctx));
 
             return eval(let, new_ctx);
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -129,6 +129,7 @@
                 typename result<local_eval(Expr const&, Context&)>::type
                 make_ref(Expr const& expr, Context & ctx, mpl::false_) const
                 {
+ //std::cout << typeid(ctx).name() << "\n";
                     return phoenix::ref(eval(expr, ctx));
                 }
                 
@@ -145,20 +146,14 @@
             : proto::or_<
                 proto::when<
                     proto::comma<local_var_def_list, local_var_def>
- , proto::comma<
- local_var_def_list(proto::_left , proto::_state)
- , local_var_def_list(proto::_right, proto::_state)
- >(
+ , proto::_make_comma(
                         local_var_def_list(proto::_left , proto::_state)
                       , local_var_def_list(proto::_right, proto::_state)
                     )
>
               , proto::when<
                     local_var_def
- , proto::assign<
- proto::_left
- , local_eval(proto::_right, proto::_state)
- >(
+ , proto::_make_assign(
                         proto::_left
                       , local_eval(proto::_right, proto::_state)
                     )
@@ -194,10 +189,11 @@
                         detail::local_var_def_is_nullary(proto::_left, proto::_state)
                       , evaluator(
                             proto::_right(proto::_right)
- , fusion::vector2<
- mpl::true_
- , boost::phoenix::is_nullary
- >()
+ , _context(
+ proto::_
+ , mpl::true_()
+ , boost::phoenix::is_nullary()
+ )
                           , int()
                         )
>()
@@ -206,10 +202,11 @@
                     rule::local_var_def
                   , evaluator(
                         proto::_right
- , fusion::vector2<
- mpl::true_
- , boost::phoenix::is_nullary
- >()
+ , _context(
+ proto::_
+ , mpl::true_()
+ , boost::phoenix::is_nullary()
+ )
                       , int()
                     )
>
@@ -219,7 +216,8 @@
         struct scope_is_nullary_actions
         {
             template <typename Rule, typename Dummy = void>
- struct when : boost::phoenix::is_nullary::when<Rule, Dummy>
+ struct when
+ : boost::phoenix::is_nullary::when<Rule, Dummy>
             {};
         };
 
@@ -249,56 +247,54 @@
                   , proto::if_<
                         proto::matches<
                             proto::_left(proto::_right)
- , proto::_data
+ , proto::_state
>()
                       , evaluator(
                             proto::_right(proto::_right)
- , proto::_state
- , int()
+ , _context
                         )
                       , find_local(
                             proto::_left
                           , proto::_state
- , proto::_data
                         )
>
>
               , proto::when<
                     rule::local_var_def
                   , proto::if_<
- proto::matches<proto::_left, proto::_data>()
- , evaluator(proto::_right, proto::_state, int())
+ proto::matches<proto::_left, proto::_state>()
+ , evaluator(proto::_right, _context)
                       , detail::local_var_not_found()
>
>
>
         {};
 
- template<typename This, typename Args, typename Context, typename Key>
+ template<typename This, typename Env, typename Key, typename Actions>
         struct get_local_result_impl
             : mpl::eval_if<
                 is_same<
- typename Args::locals_type
+ typename Env::type::locals_type
                   , mpl::void_
>
- , typename This:: template result<This(typename Args::outer_env_type&)>
+ , typename This:: template result<This(typename Env::type::outer_env_type&, Actions)>
               , mpl::eval_if<
                     is_same<
                         typename proto::detail::uncvref<
                             typename detail::find_local::impl<
- typename Args::locals_type &
- , Context
+ typename Env::type::locals_type &
                               , Key
+ , Actions
>::result_type
>::type
                       , detail::local_var_not_found
>
- , typename This:: template result<This(typename Args::outer_env_type&)>
+ , typename This:: template result<This(typename Env::type::outer_env_type&, Actions)>
                   , mpl::identity<
                         typename detail::find_local::impl<
- typename Args::locals_type &
- , Context
+ typename Env::type::locals_type &
                           , Key
+ , Actions
>::result_type
>
>
@@ -313,66 +309,50 @@
         template <typename Sig>
         struct result;
         
- template <typename This, typename Context>
- struct result<This(Context)>
- : result<This(Context const &)>
+ template <typename This, typename Env, typename Actions>
+ struct result<This(Env, Actions &)>
+ : result<This(Env const &, Actions &)>
         {};
 
- template <typename This, typename Context>
- struct result<This(Context &)>
+ template <typename This, typename Env, typename Actions>
+ struct result<This(Env &, Actions&)>
         {
             typedef
- typename proto::detail::uncvref<
- typename result_of::env<Context>::type
- >::type
- env_type;
-
- typedef
                 typename mpl::eval_if<
- is_scoped_environment<env_type>
- , detail::get_local_result_impl<This, env_type, Context, Key>
+ is_scoped_environment<Env>
+ , detail::get_local_result_impl<This, proto::detail::uncvref<Env>, Key, Actions&>
                   , mpl::identity<detail::local_var_not_found>
>::type
                 type;
         };
 
- template <typename Context>
- typename result<get_local<Key>(Context&)>::type
- operator()(Context &ctx) const
+ template <typename Env, typename Actions>
+ typename result<get_local<Key>(Env&, Actions&)>::type
+ operator()(Env &env, Actions &actions) const
         {
- typedef
- typename proto::detail::uncvref<
- typename result_of::env<Context>::type
- >::type
- env_type;
-
             return this->evaluate(
- ctx
- , typename is_scoped_environment<env_type>::type()
+ env
+ , actions
+ , typename is_scoped_environment<Env>::type()
             );
         }
 
         private:
             // is a scoped environment
- template <typename Context>
- typename result<get_local<Key>(Context&)>::type
- evaluate(Context & ctx, mpl::true_) const
+ template <typename Env, typename Actions>
+ typename result<get_local<Key>(Env&, Actions&)>::type
+ evaluate(Env & env, Actions & actions, mpl::true_) const
             {
- typedef
- typename proto::detail::uncvref<
- typename result_of::env<Context>::type
- >::type
- env_type;
-
                 return
                     this->evaluate_scoped(
- ctx
+ env
+ , actions
                       , typename is_same<
                             typename proto::detail::uncvref<
                                 typename detail::find_local::impl<
- typename env_type::locals_type
- , Context &
+ typename Env::locals_type
                                   , Key
+ , Actions
>::result_type
>::type
                           , detail::local_var_not_found
@@ -383,31 +363,31 @@
 
             // is a scoped environment
             // --> we need to look in the outer environment
- template <typename Context>
- typename result<get_local<Key>(Context&)>::type
- evaluate_scoped(Context & ctx, mpl::false_) const
+ template <typename Env, typename Actions>
+ typename result<get_local<Key>(Env&, Actions&)>::type
+ evaluate_scoped(Env & env, Actions& actions, mpl::false_) const
             {
                 Key k;
                 return
                     detail::find_local()(
- env(ctx).locals
- , ctx
+ env.locals
                       , k
+ , actions
                     );
             }
             
             // is a scoped environment
             // --> we have the local in our environment
- template <typename Context>
- typename result<get_local<Key>(Context&)>::type
- evaluate_scoped(Context & ctx, mpl::true_) const
+ template <typename Env, typename Actions>
+ typename result<get_local<Key>(Env&, Actions&)>::type
+ evaluate_scoped(Env & env, Actions &actions, mpl::true_) const
             {
- return get_local<Key>()(env(ctx).outer_env);
+ return get_local<Key>()(env.outer_env, actions);
             }
             
- template <typename Context>
- typename result<get_local<Key>(Context&)>::type
- evaluate(Context & ctx, mpl::false_) const
+ template <typename Env, typename Actions>
+ typename result<get_local<Key>(Env&, Actions &)>::type
+ evaluate(Env &, Actions &, mpl::false_) const
             {
                 return detail::local_var_not_found();
             }
@@ -429,7 +409,13 @@
 
             typedef get_local<lookup_grammar> get_local_type;
             typedef
- typename get_local_type::template result<get_local_type(Context)>::type
+ typename get_local_type::
+ template result<
+ get_local_type(
+ typename result_of::env<Context>::type
+ , typename result_of::actions<Context>::type
+ )
+ >::type
                 type;
         };
 
@@ -440,7 +426,7 @@
             typedef
                 typename expression::local_variable<Local>::type
                 lookup_grammar;
- return get_local<lookup_grammar>()(ctx);
+ return get_local<lookup_grammar>()(env(ctx), actions(ctx));
         }
     };
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/scoped_environment.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/scoped_environment.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/scoped_environment.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -56,12 +56,7 @@
         template <typename Seq> \
         struct INTRINSIC \
         { \
- typedef \
- typename boost::remove_reference< \
- typename fusion::result_of::at_c<typename Seq::env_type, 0>::type \
- >::type \
- env_type; \
- typedef typename fusion::result_of::INTRINSIC<env_type>::type type; \
+ typedef typename fusion::result_of::INTRINSIC<typename Seq::env_type>::type type; \
                                                                                 \
             static type call(Seq & seq) \
             { \
@@ -78,28 +73,18 @@
         struct value_at
         {
             typedef
- typename boost::remove_reference<
- typename fusion::result_of::at_c<typename Seq::env_type, 0>::type
- >::type
- env_type;
- typedef
- typename fusion::result_of::value_at<env_type, N>::type
+ typename fusion::result_of::value_at<typename Seq::env_type, N>::type
                 type;
         };
         
         template <typename Seq, typename N>
         struct at
         {
- typedef
- typename boost::remove_reference<
- typename fusion::result_of::at_c<typename Seq::env_type, 0>::type
- >::type
- env_type;
- typedef typename fusion::result_of::at<env_type, N>::type type;
+ typedef typename fusion::result_of::at<typename Seq::env_type, N>::type type;
 
             static type call(Seq & seq)
             {
- return fusion::at<N>(fusion::at_c<0>(seq.env));
+ return fusion::at<N>(seq.env);
             }
         };
     };

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_10.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -13,10 +13,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<0> size
@@ -24,15 +24,15 @@
             ) const
             {
                 
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<0> size
@@ -42,7 +42,7 @@
                 
                 mpl::int_<0>
                     idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                     default:
@@ -54,7 +54,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -65,10 +65,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<1> size
@@ -76,15 +76,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<1> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<1> size
@@ -94,7 +94,7 @@
                 
                 mpl::int_<0>
                     idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                     default:
@@ -106,7 +106,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -117,10 +117,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<2> size
@@ -128,15 +128,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<2> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<2> size
@@ -146,9 +146,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
                 mpl::int_<1>
                     idx1;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -158,7 +158,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -169,10 +169,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<3> size
@@ -180,15 +180,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<3> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<3> size
@@ -198,9 +198,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
                 mpl::int_<2>
                     idx2;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -210,7 +210,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -221,10 +221,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<4> size
@@ -232,15 +232,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<4> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<4> size
@@ -250,9 +250,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
                 mpl::int_<3>
                     idx3;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -262,7 +262,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -273,10 +273,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<5> size
@@ -284,15 +284,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<5> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<5> size
@@ -302,9 +302,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
                 mpl::int_<4>
                     idx4;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -314,7 +314,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -325,10 +325,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<6> size
@@ -336,15 +336,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<6> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<6> size
@@ -354,9 +354,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
                 mpl::int_<5>
                     idx5;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -366,7 +366,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -377,10 +377,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<7> size
@@ -388,15 +388,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<7> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<7> size
@@ -406,9 +406,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
                 mpl::int_<6>
                     idx6;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -418,7 +418,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -429,10 +429,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<8> size
@@ -440,15 +440,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<8> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<8> size
@@ -458,9 +458,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
                 mpl::int_<7>
                     idx7;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -470,7 +470,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -481,10 +481,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<9> size
@@ -492,15 +492,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< detail::sw
itch_grammar( Cases , mpl::int_<8> , mpl::int_<9> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<9> size
@@ -510,9 +510,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
                 mpl::int_<8>
                     idx8;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -522,7 +522,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -533,10 +533,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<10> size
@@ -544,15 +544,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<10> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<10> size
@@ -562,9 +562,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
                 mpl::int_<9>
                     idx9;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -574,7 +574,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_20.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -13,10 +13,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<0> size
@@ -24,15 +24,15 @@
             ) const
             {
                 
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<0> size
@@ -42,7 +42,7 @@
                 
                 mpl::int_<0>
                     idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                     default:
@@ -54,7 +54,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -65,10 +65,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<1> size
@@ -76,15 +76,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<1> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<1> size
@@ -94,7 +94,7 @@
                 
                 mpl::int_<0>
                     idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                     default:
@@ -106,7 +106,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -117,10 +117,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<2> size
@@ -128,15 +128,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<2> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<2> size
@@ -146,9 +146,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
                 mpl::int_<1>
                     idx1;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -158,7 +158,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -169,10 +169,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<3> size
@@ -180,15 +180,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<3> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<3> size
@@ -198,9 +198,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
                 mpl::int_<2>
                     idx2;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -210,7 +210,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -221,10 +221,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<4> size
@@ -232,15 +232,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<4> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<4> size
@@ -250,9 +250,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
                 mpl::int_<3>
                     idx3;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -262,7 +262,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -273,10 +273,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<5> size
@@ -284,15 +284,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<5> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<5> size
@@ -302,9 +302,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
                 mpl::int_<4>
                     idx4;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -314,7 +314,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -325,10 +325,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<6> size
@@ -336,15 +336,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<6> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<6> size
@@ -354,9 +354,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
                 mpl::int_<5>
                     idx5;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -366,7 +366,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -377,10 +377,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<7> size
@@ -388,15 +388,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<7> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<7> size
@@ -406,9 +406,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
                 mpl::int_<6>
                     idx6;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -418,7 +418,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -429,10 +429,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<8> size
@@ -440,15 +440,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<8> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<8> size
@@ -458,9 +458,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
                 mpl::int_<7>
                     idx7;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -470,7 +470,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -481,10 +481,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<9> size
@@ -492,15 +492,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< detail::sw
itch_grammar( Cases , mpl::int_<8> , mpl::int_<9> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<9> size
@@ -510,9 +510,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
                 mpl::int_<8>
                     idx8;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -522,7 +522,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -533,10 +533,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<10> size
@@ -544,15 +544,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<10> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<10> size
@@ -562,9 +562,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
                 mpl::int_<9>
                     idx9;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -574,7 +574,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -585,10 +585,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<11> size
@@ -596,15 +596,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<11> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<11> size
@@ -614,9 +614,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
                 mpl::int_<10>
                     idx10;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -626,7 +626,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -637,10 +637,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<12> size
@@ -648,15 +648,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<12> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<12> size
@@ -666,9 +666,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
                 mpl::int_<11>
                     idx11;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -678,7 +678,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -689,10 +689,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<13> size
@@ -700,15 +700,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<13> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<13> size
@@ -718,9 +718,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
                 mpl::int_<12>
                     idx12;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -730,7 +730,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -741,10 +741,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<14> size
@@ -752,15 +752,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<14> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<14> size
@@ -770,9 +770,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
                 mpl::int_<13>
                     idx13;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -782,7 +782,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -793,10 +793,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<15> size
@@ -804,15 +804,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<15> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<15> size
@@ -822,9 +822,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
                 mpl::int_<14>
                     idx14;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -834,7 +834,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -845,10 +845,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<16> size
@@ -856,15 +856,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<16> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<16> size
@@ -874,9 +874,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
                 mpl::int_<15>
                     idx15;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -886,7 +886,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -897,10 +897,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<17> size
@@ -908,15 +908,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<17> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<17> size
@@ -926,9 +926,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
                 mpl::int_<16>
                     idx16;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -938,7 +938,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -949,10 +949,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<18> size
@@ -960,15 +960,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<18> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<18> size
@@ -978,9 +978,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
                 mpl::int_<17>
                     idx17;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -990,7 +990,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1001,10 +1001,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<19> size
@@ -1012,15 +1012,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<19> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<19> size
@@ -1030,9 +1030,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
                 mpl::int_<18>
                     idx18;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1042,7 +1042,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1053,10 +1053,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<20> size
@@ -1064,15 +1064,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<20> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<20> size
@@ -1082,9 +1082,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
                 mpl::int_<19>
                     idx19;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1094,7 +1094,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_30.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -13,10 +13,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<0> size
@@ -24,15 +24,15 @@
             ) const
             {
                 
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<0> size
@@ -42,7 +42,7 @@
                 
                 mpl::int_<0>
                     idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                     default:
@@ -54,7 +54,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -65,10 +65,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<1> size
@@ -76,15 +76,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<1> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<1> size
@@ -94,7 +94,7 @@
                 
                 mpl::int_<0>
                     idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                     default:
@@ -106,7 +106,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -117,10 +117,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<2> size
@@ -128,15 +128,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<2> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<2> size
@@ -146,9 +146,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
                 mpl::int_<1>
                     idx1;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -158,7 +158,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -169,10 +169,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<3> size
@@ -180,15 +180,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<3> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<3> size
@@ -198,9 +198,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
                 mpl::int_<2>
                     idx2;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -210,7 +210,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -221,10 +221,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<4> size
@@ -232,15 +232,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<4> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<4> size
@@ -250,9 +250,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
                 mpl::int_<3>
                     idx3;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -262,7 +262,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -273,10 +273,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<5> size
@@ -284,15 +284,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<5> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<5> size
@@ -302,9 +302,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
                 mpl::int_<4>
                     idx4;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -314,7 +314,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -325,10 +325,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<6> size
@@ -336,15 +336,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<6> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<6> size
@@ -354,9 +354,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
                 mpl::int_<5>
                     idx5;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -366,7 +366,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -377,10 +377,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<7> size
@@ -388,15 +388,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<7> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<7> size
@@ -406,9 +406,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
                 mpl::int_<6>
                     idx6;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -418,7 +418,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -429,10 +429,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<8> size
@@ -440,15 +440,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<8> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<8> size
@@ -458,9 +458,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
                 mpl::int_<7>
                     idx7;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -470,7 +470,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -481,10 +481,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<9> size
@@ -492,15 +492,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< detail::sw
itch_grammar( Cases , mpl::int_<8> , mpl::int_<9> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<9> size
@@ -510,9 +510,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
                 mpl::int_<8>
                     idx8;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -522,7 +522,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -533,10 +533,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<10> size
@@ -544,15 +544,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<10> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<10> size
@@ -562,9 +562,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
                 mpl::int_<9>
                     idx9;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -574,7 +574,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -585,10 +585,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<11> size
@@ -596,15 +596,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<11> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<11> size
@@ -614,9 +614,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
                 mpl::int_<10>
                     idx10;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -626,7 +626,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -637,10 +637,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<12> size
@@ -648,15 +648,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<12> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<12> size
@@ -666,9 +666,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
                 mpl::int_<11>
                     idx11;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -678,7 +678,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -689,10 +689,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<13> size
@@ -700,15 +700,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<13> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<13> size
@@ -718,9 +718,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
                 mpl::int_<12>
                     idx12;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -730,7 +730,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -741,10 +741,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<14> size
@@ -752,15 +752,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<14> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<14> size
@@ -770,9 +770,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
                 mpl::int_<13>
                     idx13;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -782,7 +782,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -793,10 +793,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<15> size
@@ -804,15 +804,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<15> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<15> size
@@ -822,9 +822,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
                 mpl::int_<14>
                     idx14;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -834,7 +834,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -845,10 +845,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<16> size
@@ -856,15 +856,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<16> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<16> size
@@ -874,9 +874,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
                 mpl::int_<15>
                     idx15;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -886,7 +886,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -897,10 +897,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<17> size
@@ -908,15 +908,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<17> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<17> size
@@ -926,9 +926,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
                 mpl::int_<16>
                     idx16;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -938,7 +938,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -949,10 +949,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<18> size
@@ -960,15 +960,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<18> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<18> size
@@ -978,9 +978,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
                 mpl::int_<17>
                     idx17;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -990,7 +990,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1001,10 +1001,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<19> size
@@ -1012,15 +1012,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<19> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<19> size
@@ -1030,9 +1030,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
                 mpl::int_<18>
                     idx18;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1042,7 +1042,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1053,10 +1053,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<20> size
@@ -1064,15 +1064,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<20> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<20> size
@@ -1082,9 +1082,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
                 mpl::int_<19>
                     idx19;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1094,7 +1094,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1105,10 +1105,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<21> size
@@ -1116,15 +1116,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<21> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<21> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<21> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<21> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<21> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<21> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<21> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<21> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<21> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<21> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<21> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<21> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<21> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<21> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<21> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<21> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<21> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<21> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<21> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<21> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<21> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<21> size
@@ -1134,9 +1134,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<21> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<21> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<21> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<21> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<21> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<21> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<21> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<21> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<21> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<21> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<21> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<21> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<21> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<21> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<21> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<21> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<21> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<21> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<21> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<21> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
                 mpl::int_<20>
                     idx20;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1146,7 +1146,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1157,10 +1157,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<22> size
@@ -1168,15 +1168,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<22> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<22> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<22> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<22> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<22> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<22> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<22> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<22> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<22> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<22> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<22> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<22> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<22> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<22> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<22> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<22> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<22> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<22> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<22> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<22> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<22> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<22> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<22> size
@@ -1186,9 +1186,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<22> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<22> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<22> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<22> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<22> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<22> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<22> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<22> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<22> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<22> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<22> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<22> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<22> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<22> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<22> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<22> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<22> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<22> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<22> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<22> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<22> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20;
                 mpl::int_<21>
                     idx21;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1198,7 +1198,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1209,10 +1209,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<23> size
@@ -1220,15 +1220,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<23> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<23> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<23> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<23> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<23> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<23> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<23> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<23> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<23> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<23> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<23> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<23> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<23> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<23> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<23> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<23> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<23> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<23> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<23> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<23> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<23> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<23> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<23> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<23> size
@@ -1238,9 +1238,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<23> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<23> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<23> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<23> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<23> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<23> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<23> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<23> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<23> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<23> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<23> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<23> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<23> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<23> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<23> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<23> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<23> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<23> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<23> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<23> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<23> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<23> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21;
                 mpl::int_<22>
                     idx22;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1250,7 +1250,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1261,10 +1261,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<24> size
@@ -1272,15 +1272,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<24> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<24> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<24> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<24> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<24> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<24> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<24> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<24> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<24> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<24> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<24> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<24> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<24> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<24> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<24> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<24> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<24> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<24> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<24> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<24> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<24> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<24> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<24> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<24> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<24> size
@@ -1290,9 +1290,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<24> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<24> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<24> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<24> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<24> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<24> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<24> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<24> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<24> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<24> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<24> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<24> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<24> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<24> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<24> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<24> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<24> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<24> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<24> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<24> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<24> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<24> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<24> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22;
                 mpl::int_<23>
                     idx23;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1302,7 +1302,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1313,10 +1313,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<25> size
@@ -1324,15 +1324,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<25> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<25> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<25> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<25> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<25> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<25> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<25> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<25> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<25> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<25> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<25> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<25> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<25> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<25> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<25> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<25> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<25> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<25> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<25> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<25> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<25> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<25> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<25> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<25> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<25> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<25> size
@@ -1342,9 +1342,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<25> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<25> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<25> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<25> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<25> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<25> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<25> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<25> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<25> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<25> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<25> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<25> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<25> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<25> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<25> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<25> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<25> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<25> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<25> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<25> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<25> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<25> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<25> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<25> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23;
                 mpl::int_<24>
                     idx24;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1354,7 +1354,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1365,10 +1365,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<26> size
@@ -1376,15 +1376,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<26> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<26> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<26> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<26> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<26> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<26> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<26> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<26> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<26> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<26> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<26> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<26> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<26> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<26> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<26> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<26> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<26> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<26> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<26> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<26> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<26> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<26> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<26> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<26> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<26> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<26> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<26> size
@@ -1394,9 +1394,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<26> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<26> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<26> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<26> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<26> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<26> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<26> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<26> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<26> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<26> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<26> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<26> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<26> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<26> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<26> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<26> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<26> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<26> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<26> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<26> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<26> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<26> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<26> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<26> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<26> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24;
                 mpl::int_<25>
                     idx25;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1406,7 +1406,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1417,10 +1417,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<27> size
@@ -1428,15 +1428,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<27> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<27> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<27> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<27> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<27> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<27> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<27> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<27> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<27> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<27> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<27> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<27> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<27> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<27> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<27> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<27> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<27> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<27> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<27> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<27> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<27> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<27> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<27> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<27> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<27> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<27> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<27> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<27> size
@@ -1446,9 +1446,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<27> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<27> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<27> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<27> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<27> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<27> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<27> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<27> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<27> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<27> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<27> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<27> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<27> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<27> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<27> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<27> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<27> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<27> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<27> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<27> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<27> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<27> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<27> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<27> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<27> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<27> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25;
                 mpl::int_<26>
                     idx26;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1458,7 +1458,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1469,10 +1469,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<28> size
@@ -1480,15 +1480,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<28> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<28> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<28> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<28> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<28> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<28> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<28> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<28> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<28> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<28> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<28> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<28> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<28> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<28> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<28> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<28> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<28> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<28> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<28> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<28> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<28> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<28> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<28> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<28> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<28> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<28> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<28> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<28> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<28> size
@@ -1498,9 +1498,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<28> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<28> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<28> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<28> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<28> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<28> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<28> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<28> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<28> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<28> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<28> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<28> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<28> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<28> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<28> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<28> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<28> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<28> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<28> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<28> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<28> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<28> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<28> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<28> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<28> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<28> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<28> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26;
                 mpl::int_<27>
                     idx27;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1510,7 +1510,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1521,10 +1521,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<29> size
@@ -1532,15 +1532,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<29> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<29> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<29> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<29> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<29> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<29> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<29> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<29> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<29> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<29> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<29> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<29> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<29> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<29> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<29> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<29> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<29> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<29> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<29> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<29> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<29> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<29> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<29> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<29> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<29> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<29> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<29> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<29> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<29> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<29> size
@@ -1550,9 +1550,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<29> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<29> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<29> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<29> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<29> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<29> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<29> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<29> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<29> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<29> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<29> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<29> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<29> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<29> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<29> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<29> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<29> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<29> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<29> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<29> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<29> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<29> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<29> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<29> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<29> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<29> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<29> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<29> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27;
                 mpl::int_<28>
                     idx28;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1562,7 +1562,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1573,10 +1573,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<30> size
@@ -1584,15 +1584,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<30> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<30> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<30> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<30> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<30> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<30> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<30> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<30> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<30> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<30> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<30> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<30> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<30> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<30> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<30> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<30> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<30> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<30> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<30> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<30> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<30> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<30> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<30> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<30> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<30> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<30> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<30> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<30> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<30> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<30> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<30> size
@@ -1602,9 +1602,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<30> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<30> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<30> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<30> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<30> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<30> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<30> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<30> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<30> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<30> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<30> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<30> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<30> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<30> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<30> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<30> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<30> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<30> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<30> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<30> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<30> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<30> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<30> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<30> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<30> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<30> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<30> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<30> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<30> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28;
                 mpl::int_<29>
                     idx29;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1614,7 +1614,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_40.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -13,10 +13,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<0> size
@@ -24,15 +24,15 @@
             ) const
             {
                 
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<0> size
@@ -42,7 +42,7 @@
                 
                 mpl::int_<0>
                     idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                     default:
@@ -54,7 +54,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -65,10 +65,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<1> size
@@ -76,15 +76,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<1> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<1> size
@@ -94,7 +94,7 @@
                 
                 mpl::int_<0>
                     idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                     default:
@@ -106,7 +106,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -117,10 +117,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<2> size
@@ -128,15 +128,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<2> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<2> size
@@ -146,9 +146,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
                 mpl::int_<1>
                     idx1;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -158,7 +158,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -169,10 +169,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<3> size
@@ -180,15 +180,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<3> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<3> size
@@ -198,9 +198,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
                 mpl::int_<2>
                     idx2;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -210,7 +210,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -221,10 +221,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<4> size
@@ -232,15 +232,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<4> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<4> size
@@ -250,9 +250,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
                 mpl::int_<3>
                     idx3;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -262,7 +262,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -273,10 +273,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<5> size
@@ -284,15 +284,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<5> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<5> size
@@ -302,9 +302,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
                 mpl::int_<4>
                     idx4;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -314,7 +314,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -325,10 +325,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<6> size
@@ -336,15 +336,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<6> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<6> size
@@ -354,9 +354,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
                 mpl::int_<5>
                     idx5;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -366,7 +366,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -377,10 +377,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<7> size
@@ -388,15 +388,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<7> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<7> size
@@ -406,9 +406,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
                 mpl::int_<6>
                     idx6;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -418,7 +418,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -429,10 +429,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<8> size
@@ -440,15 +440,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<8> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<8> size
@@ -458,9 +458,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
                 mpl::int_<7>
                     idx7;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -470,7 +470,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -481,10 +481,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<9> size
@@ -492,15 +492,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< detail::sw
itch_grammar( Cases , mpl::int_<8> , mpl::int_<9> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<9> size
@@ -510,9 +510,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
                 mpl::int_<8>
                     idx8;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -522,7 +522,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -533,10 +533,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<10> size
@@ -544,15 +544,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<10> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<10> size
@@ -562,9 +562,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
                 mpl::int_<9>
                     idx9;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -574,7 +574,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -585,10 +585,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<11> size
@@ -596,15 +596,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<11> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<11> size
@@ -614,9 +614,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
                 mpl::int_<10>
                     idx10;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -626,7 +626,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -637,10 +637,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<12> size
@@ -648,15 +648,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<12> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<12> size
@@ -666,9 +666,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
                 mpl::int_<11>
                     idx11;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -678,7 +678,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -689,10 +689,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<13> size
@@ -700,15 +700,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<13> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<13> size
@@ -718,9 +718,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
                 mpl::int_<12>
                     idx12;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -730,7 +730,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -741,10 +741,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<14> size
@@ -752,15 +752,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<14> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<14> size
@@ -770,9 +770,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
                 mpl::int_<13>
                     idx13;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -782,7 +782,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -793,10 +793,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<15> size
@@ -804,15 +804,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<15> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<15> size
@@ -822,9 +822,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
                 mpl::int_<14>
                     idx14;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -834,7 +834,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -845,10 +845,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<16> size
@@ -856,15 +856,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<16> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<16> size
@@ -874,9 +874,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
                 mpl::int_<15>
                     idx15;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -886,7 +886,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -897,10 +897,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<17> size
@@ -908,15 +908,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<17> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<17> size
@@ -926,9 +926,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
                 mpl::int_<16>
                     idx16;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -938,7 +938,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -949,10 +949,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<18> size
@@ -960,15 +960,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<18> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<18> size
@@ -978,9 +978,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
                 mpl::int_<17>
                     idx17;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -990,7 +990,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1001,10 +1001,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<19> size
@@ -1012,15 +1012,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<19> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<19> size
@@ -1030,9 +1030,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
                 mpl::int_<18>
                     idx18;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1042,7 +1042,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1053,10 +1053,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<20> size
@@ -1064,15 +1064,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<20> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<20> size
@@ -1082,9 +1082,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
                 mpl::int_<19>
                     idx19;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1094,7 +1094,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1105,10 +1105,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<21> size
@@ -1116,15 +1116,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<21> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<21> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<21> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<21> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<21> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<21> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<21> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<21> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<21> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<21> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<21> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<21> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<21> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<21> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<21> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<21> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<21> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<21> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<21> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<21> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<21> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<21> size
@@ -1134,9 +1134,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<21> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<21> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<21> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<21> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<21> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<21> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<21> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<21> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<21> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<21> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<21> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<21> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<21> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<21> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<21> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<21> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<21> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<21> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<21> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<21> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
                 mpl::int_<20>
                     idx20;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1146,7 +1146,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1157,10 +1157,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<22> size
@@ -1168,15 +1168,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<22> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<22> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<22> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<22> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<22> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<22> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<22> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<22> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<22> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<22> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<22> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<22> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<22> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<22> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<22> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<22> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<22> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<22> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<22> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<22> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<22> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<22> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<22> size
@@ -1186,9 +1186,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<22> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<22> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<22> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<22> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<22> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<22> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<22> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<22> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<22> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<22> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<22> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<22> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<22> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<22> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<22> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<22> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<22> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<22> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<22> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<22> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<22> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20;
                 mpl::int_<21>
                     idx21;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1198,7 +1198,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1209,10 +1209,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<23> size
@@ -1220,15 +1220,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<23> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<23> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<23> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<23> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<23> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<23> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<23> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<23> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<23> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<23> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<23> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<23> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<23> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<23> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<23> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<23> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<23> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<23> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<23> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<23> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<23> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<23> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<23> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<23> size
@@ -1238,9 +1238,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<23> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<23> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<23> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<23> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<23> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<23> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<23> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<23> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<23> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<23> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<23> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<23> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<23> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<23> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<23> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<23> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<23> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<23> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<23> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<23> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<23> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<23> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21;
                 mpl::int_<22>
                     idx22;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1250,7 +1250,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1261,10 +1261,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<24> size
@@ -1272,15 +1272,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<24> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<24> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<24> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<24> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<24> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<24> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<24> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<24> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<24> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<24> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<24> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<24> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<24> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<24> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<24> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<24> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<24> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<24> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<24> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<24> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<24> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<24> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<24> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<24> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<24> size
@@ -1290,9 +1290,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<24> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<24> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<24> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<24> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<24> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<24> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<24> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<24> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<24> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<24> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<24> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<24> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<24> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<24> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<24> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<24> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<24> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<24> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<24> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<24> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<24> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<24> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<24> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22;
                 mpl::int_<23>
                     idx23;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1302,7 +1302,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1313,10 +1313,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<25> size
@@ -1324,15 +1324,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<25> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<25> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<25> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<25> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<25> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<25> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<25> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<25> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<25> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<25> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<25> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<25> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<25> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<25> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<25> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<25> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<25> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<25> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<25> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<25> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<25> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<25> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<25> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<25> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<25> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<25> size
@@ -1342,9 +1342,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<25> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<25> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<25> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<25> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<25> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<25> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<25> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<25> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<25> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<25> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<25> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<25> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<25> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<25> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<25> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<25> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<25> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<25> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<25> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<25> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<25> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<25> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<25> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<25> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23;
                 mpl::int_<24>
                     idx24;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1354,7 +1354,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1365,10 +1365,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<26> size
@@ -1376,15 +1376,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<26> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<26> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<26> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<26> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<26> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<26> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<26> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<26> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<26> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<26> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<26> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<26> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<26> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<26> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<26> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<26> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<26> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<26> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<26> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<26> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<26> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<26> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<26> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<26> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<26> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<26> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<26> size
@@ -1394,9 +1394,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<26> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<26> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<26> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<26> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<26> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<26> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<26> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<26> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<26> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<26> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<26> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<26> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<26> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<26> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<26> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<26> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<26> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<26> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<26> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<26> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<26> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<26> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<26> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<26> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<26> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24;
                 mpl::int_<25>
                     idx25;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1406,7 +1406,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1417,10 +1417,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<27> size
@@ -1428,15 +1428,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<27> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<27> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<27> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<27> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<27> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<27> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<27> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<27> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<27> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<27> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<27> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<27> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<27> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<27> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<27> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<27> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<27> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<27> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<27> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<27> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<27> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<27> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<27> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<27> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<27> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<27> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<27> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<27> size
@@ -1446,9 +1446,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<27> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<27> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<27> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<27> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<27> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<27> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<27> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<27> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<27> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<27> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<27> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<27> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<27> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<27> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<27> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<27> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<27> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<27> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<27> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<27> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<27> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<27> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<27> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<27> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<27> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<27> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25;
                 mpl::int_<26>
                     idx26;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1458,7 +1458,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1469,10 +1469,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<28> size
@@ -1480,15 +1480,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<28> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<28> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<28> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<28> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<28> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<28> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<28> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<28> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<28> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<28> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<28> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<28> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<28> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<28> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<28> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<28> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<28> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<28> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<28> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<28> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<28> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<28> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<28> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<28> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<28> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<28> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<28> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<28> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<28> size
@@ -1498,9 +1498,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<28> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<28> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<28> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<28> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<28> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<28> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<28> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<28> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<28> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<28> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<28> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<28> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<28> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<28> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<28> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<28> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<28> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<28> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<28> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<28> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<28> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<28> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<28> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<28> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<28> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<28> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<28> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26;
                 mpl::int_<27>
                     idx27;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1510,7 +1510,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1521,10 +1521,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<29> size
@@ -1532,15 +1532,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<29> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<29> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<29> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<29> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<29> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<29> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<29> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<29> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<29> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<29> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<29> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<29> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<29> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<29> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<29> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<29> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<29> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<29> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<29> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<29> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<29> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<29> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<29> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<29> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<29> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<29> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<29> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<29> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<29> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<29> size
@@ -1550,9 +1550,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<29> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<29> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<29> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<29> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<29> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<29> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<29> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<29> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<29> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<29> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<29> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<29> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<29> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<29> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<29> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<29> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<29> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<29> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<29> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<29> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<29> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<29> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<29> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<29> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<29> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<29> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<29> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<29> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27;
                 mpl::int_<28>
                     idx28;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1562,7 +1562,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1573,10 +1573,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<30> size
@@ -1584,15 +1584,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<30> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<30> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<30> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<30> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<30> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<30> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<30> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<30> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<30> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<30> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<30> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<30> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<30> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<30> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<30> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<30> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<30> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<30> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<30> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<30> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<30> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<30> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<30> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<30> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<30> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<30> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<30> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<30> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<30> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<30> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<30> size
@@ -1602,9 +1602,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<30> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<30> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<30> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<30> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<30> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<30> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<30> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<30> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<30> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<30> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<30> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<30> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<30> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<30> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<30> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<30> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<30> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<30> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<30> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<30> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<30> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<30> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<30> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<30> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<30> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<30> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<30> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<30> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<30> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28;
                 mpl::int_<29>
                     idx29;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1614,7 +1614,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1625,10 +1625,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<31> size
@@ -1636,15 +1636,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<31> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<31> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<31> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<31> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<31> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<31> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<31> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<31> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<31> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<31> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<31> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<31> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<31> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<31> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<31> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<31> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<31> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<31> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<31> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<31> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<31> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<31> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<31> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<31> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<31> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<31> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<31> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<31> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<31> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<31> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<31> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<31> size
@@ -1654,9 +1654,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<31> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<31> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<31> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<31> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<31> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<31> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<31> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<31> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<31> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<31> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<31> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<31> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<31> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<31> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<31> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<31> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<31> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<31> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<31> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<31> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<31> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<31> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<31> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<31> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<31> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<31> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<31> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<31> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<31> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<31> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29;
                 mpl::int_<30>
                     idx30;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1666,7 +1666,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1677,10 +1677,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<32> size
@@ -1688,15 +1688,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<32> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<32> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<32> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<32> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<32> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<32> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<32> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<32> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<32> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<32> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<32> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<32> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<32> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<32> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<32> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<32> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<32> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<32> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<32> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<32> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<32> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<32> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<32> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<32> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<32> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<32> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<32> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<32> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<32> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<32> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<32> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<32> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<32> size
@@ -1706,9 +1706,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<32> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<32> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<32> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<32> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<32> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<32> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<32> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<32> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<32> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<32> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<32> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<32> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<32> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<32> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<32> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<32> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<32> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<32> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<32> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<32> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<32> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<32> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<32> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<32> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<32> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<32> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<32> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<32> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<32> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<32> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<32> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30;
                 mpl::int_<31>
                     idx31;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1718,7 +1718,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1729,10 +1729,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<33> size
@@ -1740,15 +1740,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<33> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<33> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<33> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<33> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<33> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<33> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<33> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<33> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<33> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<33> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<33> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<33> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<33> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<33> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<33> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<33> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<33> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<33> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<33> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<33> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<33> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<33> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<33> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<33> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<33> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<33> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<33> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<33> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<33> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<33> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<33> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<33> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<33> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<33> size
@@ -1758,9 +1758,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<33> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<33> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<33> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<33> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<33> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<33> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<33> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<33> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<33> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<33> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<33> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<33> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<33> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<33> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<33> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<33> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<33> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<33> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<33> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<33> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<33> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<33> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<33> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<33> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<33> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<33> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<33> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<33> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<33> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<33> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<33> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<33> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31;
                 mpl::int_<32>
                     idx32;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1770,7 +1770,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1781,10 +1781,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<34> size
@@ -1792,15 +1792,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<34> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<34> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<34> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<34> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<34> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<34> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<34> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<34> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<34> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<34> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<34> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<34> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<34> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<34> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<34> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<34> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<34> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<34> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<34> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<34> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<34> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<34> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<34> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<34> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<34> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<34> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<34> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<34> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<34> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<34> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<34> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<34> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<34> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<34> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<34> size
@@ -1810,9 +1810,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<34> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<34> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<34> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<34> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<34> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<34> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<34> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<34> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<34> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<34> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<34> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<34> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<34> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<34> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<34> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<34> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<34> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<34> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<34> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<34> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<34> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<34> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<34> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<34> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<34> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<34> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<34> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<34> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<34> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<34> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<34> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<34> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<34> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32;
                 mpl::int_<33>
                     idx33;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1822,7 +1822,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1833,10 +1833,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<35> size
@@ -1844,15 +1844,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<35> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<35> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<35> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<35> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<35> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<35> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<35> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<35> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<35> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<35> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<35> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<35> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<35> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<35> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<35> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<35> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<35> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<35> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<35> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<35> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<35> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<35> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<35> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<35> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<35> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<35> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<35> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<35> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<35> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<35> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<35> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<35> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<35> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<35> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<35> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<35> size
@@ -1862,9 +1862,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<35> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<35> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<35> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<35> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<35> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<35> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<35> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<35> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<35> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<35> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<35> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<35> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<35> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<35> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<35> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<35> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<35> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<35> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<35> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<35> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<35> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<35> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<35> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<35> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<35> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<35> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<35> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<35> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<35> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<35> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<35> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<35> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<35> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<35> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33;
                 mpl::int_<34>
                     idx34;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1874,7 +1874,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1885,10 +1885,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<36> size
@@ -1896,15 +1896,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<36> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<36> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<36> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<36> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<36> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<36> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<36> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<36> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<36> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<36> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<36> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<36> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<36> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<36> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<36> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<36> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<36> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<36> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<36> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<36> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<36> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<36> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<36> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<36> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<36> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<36> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<36> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<36> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<36> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<36> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<36> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<36> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<36> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<36> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<36> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<36> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<36> size
@@ -1914,9 +1914,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<36> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<36> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<36> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<36> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<36> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<36> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<36> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<36> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<36> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<36> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<36> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<36> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<36> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<36> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<36> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<36> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<36> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<36> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<36> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<36> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<36> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<36> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<36> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<36> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<36> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<36> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<36> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<36> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<36> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<36> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<36> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<36> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<36> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<36> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<36> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34;
                 mpl::int_<35>
                     idx35;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1926,7 +1926,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1937,10 +1937,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<37> size
@@ -1948,15 +1948,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<37> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<37> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<37> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<37> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<37> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<37> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<37> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<37> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<37> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<37> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<37> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<37> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<37> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<37> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<37> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<37> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<37> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<37> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<37> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<37> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<37> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<37> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<37> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<37> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<37> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<37> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<37> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<37> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<37> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<37> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<37> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<37> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<37> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<37> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<37> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<37> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<37> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<37> size
@@ -1966,9 +1966,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<37> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<37> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<37> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<37> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<37> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<37> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<37> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<37> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<37> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<37> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<37> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<37> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<37> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<37> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<37> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<37> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<37> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<37> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<37> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<37> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<37> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<37> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<37> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<37> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<37> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<37> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<37> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<37> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<37> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<37> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<37> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<37> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<37> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<37> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<37> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<37> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35;
                 mpl::int_<36>
                     idx36;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1978,7 +1978,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1989,10 +1989,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<38> size
@@ -2000,15 +2000,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<38> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<38> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<38> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<38> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<38> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<38> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<38> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<38> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<38> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<38> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<38> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<38> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<38> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<38> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<38> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<38> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<38> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<38> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<38> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<38> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<38> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<38> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<38> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<38> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<38> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<38> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<38> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<38> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<38> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<38> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<38> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<38> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<38> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<38> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<38> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<38> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<38> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<38> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<38> size
@@ -2018,9 +2018,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<38> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<38> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<38> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<38> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<38> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<38> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<38> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<38> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<38> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<38> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<38> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<38> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<38> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<38> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<38> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<38> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<38> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<38> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<38> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<38> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<38> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<38> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<38> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<38> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<38> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<38> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<38> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<38> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<38> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<38> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<38> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<38> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<38> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<38> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<38> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<38> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<38> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36;
                 mpl::int_<37>
                     idx37;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2030,7 +2030,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2041,10 +2041,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<39> size
@@ -2052,15 +2052,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<39> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<39> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<39> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<39> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<39> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<39> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<39> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<39> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<39> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<39> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<39> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<39> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<39> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<39> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<39> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<39> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<39> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<39> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<39> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<39> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<39> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<39> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<39> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<39> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<39> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<39> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<39> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<39> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<39> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<39> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<39> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<39> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<39> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<39> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<39> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<39> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<39> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<39> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<39> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<39> size
@@ -2070,9 +2070,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<39> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<39> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<39> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<39> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<39> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<39> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<39> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<39> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<39> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<39> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<39> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<39> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<39> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<39> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<39> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<39> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<39> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<39> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<39> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<39> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<39> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<39> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<39> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<39> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<39> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<39> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<39> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<39> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<39> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<39> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<39> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<39> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<39> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<39> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<39> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<39> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<39> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<39> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37;
                 mpl::int_<38>
                     idx38;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2082,7 +2082,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2093,10 +2093,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<40> size
@@ -2104,15 +2104,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<40> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<40> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<40> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<40> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<40> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<40> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<40> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<40> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<40> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<40> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<40> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<40> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<40> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<40> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<40> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<40> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<40> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<40> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<40> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<40> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<40> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<40> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<40> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<40> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<40> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<40> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<40> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<40> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<40> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<40> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<40> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<40> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<40> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<40> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<40> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<40> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<40> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<40> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<40> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<40> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<40> size
@@ -2122,9 +2122,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<40> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<40> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<40> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<40> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<40> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<40> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<40> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<40> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<40> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<40> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<40> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<40> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<40> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<40> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<40> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<40> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<40> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<40> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<40> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<40> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<40> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<40> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<40> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<40> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<40> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<40> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<40> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<40> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<40> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<40> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<40> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<40> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<40> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<40> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<40> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<40> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<40> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<40> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<40> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38;
                 mpl::int_<39>
                     idx39;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2134,7 +2134,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_50.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -13,10 +13,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<0> size
@@ -24,15 +24,15 @@
             ) const
             {
                 
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<0> size
@@ -42,7 +42,7 @@
                 
                 mpl::int_<0>
                     idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                     default:
@@ -54,7 +54,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -65,10 +65,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<1> size
@@ -76,15 +76,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<1> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<1> size
@@ -94,7 +94,7 @@
                 
                 mpl::int_<0>
                     idx0;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     
                     default:
@@ -106,7 +106,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -117,10 +117,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<2> size
@@ -128,15 +128,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<2> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<2> size
@@ -146,9 +146,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
                 mpl::int_<1>
                     idx1;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -158,7 +158,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -169,10 +169,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<3> size
@@ -180,15 +180,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<3> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<3> size
@@ -198,9 +198,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
                 mpl::int_<2>
                     idx2;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -210,7 +210,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -221,10 +221,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<4> size
@@ -232,15 +232,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<4> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<4> size
@@ -250,9 +250,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
                 mpl::int_<3>
                     idx3;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -262,7 +262,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -273,10 +273,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<5> size
@@ -284,15 +284,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<5> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<5> size
@@ -302,9 +302,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
                 mpl::int_<4>
                     idx4;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -314,7 +314,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -325,10 +325,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<6> size
@@ -336,15 +336,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<6> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<6> size
@@ -354,9 +354,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
                 mpl::int_<5>
                     idx5;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -366,7 +366,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -377,10 +377,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<7> size
@@ -388,15 +388,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<7> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<7> size
@@ -406,9 +406,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
                 mpl::int_<6>
                     idx6;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -418,7 +418,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -429,10 +429,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<8> size
@@ -440,15 +440,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<8> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<8> size
@@ -458,9 +458,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
                 mpl::int_<7>
                     idx7;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -470,7 +470,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -481,10 +481,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<9> size
@@ -492,15 +492,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< detail::sw
itch_grammar( Cases , mpl::int_<8> , mpl::int_<9> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<9> size
@@ -510,9 +510,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
                 mpl::int_<8>
                     idx8;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -522,7 +522,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -533,10 +533,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<10> size
@@ -544,15 +544,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<10> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<10> size
@@ -562,9 +562,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
                 mpl::int_<9>
                     idx9;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -574,7 +574,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -585,10 +585,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<11> size
@@ -596,15 +596,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<11> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<11> size
@@ -614,9 +614,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
                 mpl::int_<10>
                     idx10;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -626,7 +626,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -637,10 +637,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<12> size
@@ -648,15 +648,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<12> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<12> size
@@ -666,9 +666,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
                 mpl::int_<11>
                     idx11;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -678,7 +678,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -689,10 +689,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<13> size
@@ -700,15 +700,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<13> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<13> size
@@ -718,9 +718,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
                 mpl::int_<12>
                     idx12;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -730,7 +730,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -741,10 +741,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<14> size
@@ -752,15 +752,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<14> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<14> size
@@ -770,9 +770,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
                 mpl::int_<13>
                     idx13;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -782,7 +782,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -793,10 +793,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<15> size
@@ -804,15 +804,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<15> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<15> size
@@ -822,9 +822,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
                 mpl::int_<14>
                     idx14;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -834,7 +834,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -845,10 +845,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<16> size
@@ -856,15 +856,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<16> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<16> size
@@ -874,9 +874,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
                 mpl::int_<15>
                     idx15;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -886,7 +886,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -897,10 +897,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<17> size
@@ -908,15 +908,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<17> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<17> size
@@ -926,9 +926,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
                 mpl::int_<16>
                     idx16;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -938,7 +938,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -949,10 +949,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<18> size
@@ -960,15 +960,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<18> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<18> size
@@ -978,9 +978,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
                 mpl::int_<17>
                     idx17;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -990,7 +990,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1001,10 +1001,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<19> size
@@ -1012,15 +1012,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<19> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<19> size
@@ -1030,9 +1030,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
                 mpl::int_<18>
                     idx18;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1042,7 +1042,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1053,10 +1053,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<20> size
@@ -1064,15 +1064,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<20> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<20> size
@@ -1082,9 +1082,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
                 mpl::int_<19>
                     idx19;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1094,7 +1094,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1105,10 +1105,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<21> size
@@ -1116,15 +1116,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<21> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<21> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<21> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<21> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<21> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<21> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<21> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<21> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<21> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<21> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<21> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<21> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<21> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<21> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<21> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<21> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<21> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<21> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<21> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<21> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<21> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<21> size
@@ -1134,9 +1134,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<21> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<21> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<21> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<21> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<21> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<21> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<21> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<21> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<21> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<21> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<21> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<21> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<21> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<21> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<21> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<21> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<21> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<21> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<21> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<21> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
                 mpl::int_<20>
                     idx20;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1146,7 +1146,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1157,10 +1157,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<22> size
@@ -1168,15 +1168,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<22> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<22> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<22> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<22> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<22> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<22> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<22> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<22> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<22> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<22> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<22> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<22> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<22> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<22> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<22> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<22> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<22> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<22> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<22> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<22> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<22> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<22> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<22> size
@@ -1186,9 +1186,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<22> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<22> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<22> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<22> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<22> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<22> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<22> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<22> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<22> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<22> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<22> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<22> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<22> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<22> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<22> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<22> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<22> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<22> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<22> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<22> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<22> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20;
                 mpl::int_<21>
                     idx21;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1198,7 +1198,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1209,10 +1209,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<23> size
@@ -1220,15 +1220,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<23> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<23> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<23> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<23> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<23> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<23> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<23> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<23> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<23> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<23> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<23> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<23> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<23> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<23> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<23> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<23> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<23> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<23> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<23> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<23> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<23> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<23> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<23> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<23> size
@@ -1238,9 +1238,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<23> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<23> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<23> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<23> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<23> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<23> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<23> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<23> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<23> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<23> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<23> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<23> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<23> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<23> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<23> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<23> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<23> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<23> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<23> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<23> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<23> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<23> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21;
                 mpl::int_<22>
                     idx22;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1250,7 +1250,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1261,10 +1261,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<24> size
@@ -1272,15 +1272,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<24> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<24> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<24> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<24> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<24> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<24> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<24> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<24> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<24> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<24> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<24> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<24> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<24> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<24> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<24> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<24> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<24> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<24> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<24> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<24> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<24> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<24> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<24> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<24> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<24> size
@@ -1290,9 +1290,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<24> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<24> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<24> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<24> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<24> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<24> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<24> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<24> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<24> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<24> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<24> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<24> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<24> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<24> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<24> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<24> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<24> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<24> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<24> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<24> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<24> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<24> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<24> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22;
                 mpl::int_<23>
                     idx23;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1302,7 +1302,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1313,10 +1313,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<25> size
@@ -1324,15 +1324,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<25> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<25> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<25> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<25> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<25> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<25> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<25> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<25> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<25> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<25> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<25> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<25> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<25> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<25> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<25> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<25> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<25> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<25> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<25> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<25> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<25> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<25> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<25> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<25> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<25> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<25> size
@@ -1342,9 +1342,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<25> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<25> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<25> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<25> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<25> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<25> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<25> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<25> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<25> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<25> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<25> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<25> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<25> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<25> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<25> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<25> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<25> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<25> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<25> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<25> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<25> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<25> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<25> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<25> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23;
                 mpl::int_<24>
                     idx24;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1354,7 +1354,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1365,10 +1365,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<26> size
@@ -1376,15 +1376,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<26> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<26> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<26> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<26> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<26> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<26> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<26> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<26> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<26> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<26> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<26> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<26> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<26> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<26> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<26> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<26> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<26> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<26> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<26> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<26> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<26> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<26> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<26> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<26> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<26> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<26> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<26> size
@@ -1394,9 +1394,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<26> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<26> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<26> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<26> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<26> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<26> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<26> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<26> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<26> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<26> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<26> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<26> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<26> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<26> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<26> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<26> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<26> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<26> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<26> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<26> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<26> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<26> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<26> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<26> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<26> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24;
                 mpl::int_<25>
                     idx25;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1406,7 +1406,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1417,10 +1417,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<27> size
@@ -1428,15 +1428,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<27> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<27> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<27> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<27> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<27> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<27> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<27> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<27> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<27> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<27> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<27> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<27> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<27> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<27> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<27> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<27> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<27> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<27> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<27> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<27> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<27> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<27> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<27> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<27> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<27> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<27> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<27> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<27> size
@@ -1446,9 +1446,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<27> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<27> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<27> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<27> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<27> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<27> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<27> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<27> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<27> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<27> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<27> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<27> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<27> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<27> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<27> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<27> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<27> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<27> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<27> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<27> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<27> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<27> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<27> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<27> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<27> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<27> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25;
                 mpl::int_<26>
                     idx26;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1458,7 +1458,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1469,10 +1469,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<28> size
@@ -1480,15 +1480,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<28> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<28> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<28> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<28> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<28> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<28> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<28> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<28> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<28> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<28> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<28> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<28> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<28> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<28> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<28> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<28> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<28> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<28> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<28> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<28> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<28> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<28> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<28> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<28> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<28> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<28> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<28> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<28> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<28> size
@@ -1498,9 +1498,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<28> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<28> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<28> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<28> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<28> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<28> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<28> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<28> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<28> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<28> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<28> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<28> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<28> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<28> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<28> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<28> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<28> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<28> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<28> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<28> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<28> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<28> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<28> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<28> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<28> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<28> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<28> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26;
                 mpl::int_<27>
                     idx27;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1510,7 +1510,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1521,10 +1521,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<29> size
@@ -1532,15 +1532,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<29> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<29> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<29> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<29> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<29> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<29> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<29> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<29> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<29> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<29> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<29> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<29> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<29> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<29> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<29> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<29> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<29> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<29> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<29> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<29> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<29> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<29> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<29> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<29> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<29> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<29> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<29> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<29> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<29> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<29> size
@@ -1550,9 +1550,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<29> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<29> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<29> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<29> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<29> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<29> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<29> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<29> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<29> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<29> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<29> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<29> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<29> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<29> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<29> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<29> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<29> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<29> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<29> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<29> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<29> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<29> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<29> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<29> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<29> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<29> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<29> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<29> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27;
                 mpl::int_<28>
                     idx28;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1562,7 +1562,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1573,10 +1573,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<30> size
@@ -1584,15 +1584,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<30> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<30> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<30> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<30> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<30> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<30> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<30> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<30> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<30> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<30> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<30> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<30> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<30> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<30> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<30> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<30> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<30> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<30> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<30> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<30> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<30> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<30> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<30> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<30> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<30> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<30> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<30> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<30> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<30> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<30> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<30> size
@@ -1602,9 +1602,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<30> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<30> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<30> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<30> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<30> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<30> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<30> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<30> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<30> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<30> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<30> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<30> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<30> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<30> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<30> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<30> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<30> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<30> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<30> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<30> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<30> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<30> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<30> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<30> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<30> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<30> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<30> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<30> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<30> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28;
                 mpl::int_<29>
                     idx29;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1614,7 +1614,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1625,10 +1625,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<31> size
@@ -1636,15 +1636,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<31> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<31> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<31> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<31> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<31> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<31> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<31> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<31> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<31> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<31> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<31> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<31> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<31> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<31> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<31> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<31> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<31> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<31> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<31> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<31> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<31> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<31> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<31> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<31> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<31> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<31> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<31> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<31> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<31> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<31> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<31> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<31> size
@@ -1654,9 +1654,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<31> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<31> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<31> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<31> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<31> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<31> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<31> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<31> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<31> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<31> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<31> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<31> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<31> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<31> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<31> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<31> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<31> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<31> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<31> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<31> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<31> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<31> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<31> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<31> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<31> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<31> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<31> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<31> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<31> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<31> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29;
                 mpl::int_<30>
                     idx30;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1666,7 +1666,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1677,10 +1677,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<32> size
@@ -1688,15 +1688,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<32> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<32> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<32> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<32> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<32> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<32> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<32> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<32> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<32> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<32> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<32> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<32> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<32> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<32> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<32> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<32> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<32> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<32> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<32> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<32> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<32> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<32> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<32> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<32> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<32> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<32> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<32> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<32> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<32> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<32> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<32> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<32> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<32> size
@@ -1706,9 +1706,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<32> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<32> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<32> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<32> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<32> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<32> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<32> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<32> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<32> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<32> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<32> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<32> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<32> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<32> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<32> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<32> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<32> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<32> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<32> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<32> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<32> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<32> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<32> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<32> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<32> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<32> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<32> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<32> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<32> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<32> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<32> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30;
                 mpl::int_<31>
                     idx31;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1718,7 +1718,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1729,10 +1729,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<33> size
@@ -1740,15 +1740,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<33> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<33> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<33> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<33> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<33> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<33> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<33> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<33> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<33> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<33> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<33> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<33> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<33> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<33> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<33> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<33> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<33> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<33> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<33> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<33> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<33> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<33> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<33> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<33> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<33> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<33> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<33> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<33> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<33> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<33> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<33> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<33> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<33> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<33> size
@@ -1758,9 +1758,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<33> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<33> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<33> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<33> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<33> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<33> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<33> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<33> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<33> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<33> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<33> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<33> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<33> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<33> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<33> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<33> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<33> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<33> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<33> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<33> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<33> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<33> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<33> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<33> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<33> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<33> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<33> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<33> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<33> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<33> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<33> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<33> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31;
                 mpl::int_<32>
                     idx32;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1770,7 +1770,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1781,10 +1781,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<34> size
@@ -1792,15 +1792,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<34> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<34> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<34> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<34> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<34> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<34> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<34> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<34> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<34> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<34> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<34> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<34> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<34> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<34> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<34> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<34> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<34> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<34> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<34> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<34> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<34> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<34> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<34> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<34> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<34> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<34> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<34> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<34> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<34> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<34> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<34> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<34> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<34> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<34> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<34> size
@@ -1810,9 +1810,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<34> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<34> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<34> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<34> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<34> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<34> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<34> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<34> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<34> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<34> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<34> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<34> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<34> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<34> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<34> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<34> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<34> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<34> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<34> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<34> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<34> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<34> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<34> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<34> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<34> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<34> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<34> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<34> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<34> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<34> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<34> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<34> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<34> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32;
                 mpl::int_<33>
                     idx33;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1822,7 +1822,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1833,10 +1833,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<35> size
@@ -1844,15 +1844,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<35> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<35> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<35> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<35> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<35> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<35> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<35> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<35> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<35> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<35> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<35> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<35> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<35> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<35> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<35> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<35> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<35> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<35> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<35> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<35> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<35> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<35> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<35> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<35> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<35> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<35> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<35> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<35> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<35> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<35> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<35> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<35> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<35> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<35> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<35> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<35> size
@@ -1862,9 +1862,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<35> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<35> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<35> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<35> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<35> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<35> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<35> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<35> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<35> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<35> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<35> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<35> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<35> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<35> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<35> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<35> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<35> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<35> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<35> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<35> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<35> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<35> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<35> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<35> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<35> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<35> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<35> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<35> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<35> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<35> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<35> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<35> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<35> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<35> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33;
                 mpl::int_<34>
                     idx34;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1874,7 +1874,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1885,10 +1885,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<36> size
@@ -1896,15 +1896,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<36> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<36> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<36> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<36> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<36> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<36> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<36> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<36> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<36> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<36> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<36> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<36> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<36> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<36> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<36> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<36> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<36> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<36> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<36> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<36> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<36> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<36> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<36> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<36> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<36> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<36> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<36> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<36> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<36> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<36> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<36> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<36> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<36> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<36> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<36> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<36> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<36> size
@@ -1914,9 +1914,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<36> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<36> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<36> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<36> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<36> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<36> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<36> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<36> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<36> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<36> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<36> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<36> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<36> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<36> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<36> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<36> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<36> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<36> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<36> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<36> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<36> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<36> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<36> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<36> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<36> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<36> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<36> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<36> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<36> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<36> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<36> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<36> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<36> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<36> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<36> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34;
                 mpl::int_<35>
                     idx35;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1926,7 +1926,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1937,10 +1937,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<37> size
@@ -1948,15 +1948,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<37> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<37> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<37> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<37> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<37> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<37> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<37> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<37> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<37> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<37> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<37> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<37> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<37> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<37> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<37> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<37> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<37> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<37> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<37> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<37> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<37> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<37> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<37> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<37> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<37> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<37> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<37> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<37> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<37> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<37> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<37> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<37> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<37> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<37> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<37> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<37> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<37> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<37> size
@@ -1966,9 +1966,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<37> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<37> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<37> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<37> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<37> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<37> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<37> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<37> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<37> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<37> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<37> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<37> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<37> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<37> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<37> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<37> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<37> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<37> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<37> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<37> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<37> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<37> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<37> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<37> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<37> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<37> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<37> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<37> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<37> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<37> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<37> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<37> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<37> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<37> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<37> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<37> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35;
                 mpl::int_<36>
                     idx36;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -1978,7 +1978,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -1989,10 +1989,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<38> size
@@ -2000,15 +2000,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<38> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<38> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<38> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<38> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<38> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<38> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<38> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<38> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<38> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<38> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<38> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<38> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<38> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<38> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<38> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<38> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<38> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<38> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<38> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<38> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<38> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<38> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<38> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<38> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<38> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<38> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<38> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<38> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<38> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<38> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<38> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<38> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<38> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<38> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<38> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<38> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<38> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<38> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<38> size
@@ -2018,9 +2018,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<38> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<38> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<38> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<38> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<38> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<38> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<38> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<38> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<38> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<38> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<38> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<38> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<38> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<38> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<38> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<38> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<38> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<38> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<38> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<38> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<38> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<38> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<38> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<38> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<38> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<38> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<38> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<38> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<38> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<38> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<38> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<38> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<38> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<38> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<38> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<38> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<38> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36;
                 mpl::int_<37>
                     idx37;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2030,7 +2030,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2041,10 +2041,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<39> size
@@ -2052,15 +2052,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<39> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<39> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<39> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<39> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<39> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<39> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<39> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<39> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<39> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<39> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<39> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<39> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<39> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<39> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<39> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<39> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<39> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<39> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<39> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<39> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<39> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<39> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<39> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<39> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<39> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<39> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<39> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<39> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<39> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<39> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<39> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<39> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<39> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<39> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<39> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<39> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<39> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<39> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<39> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<39> size
@@ -2070,9 +2070,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<39> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<39> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<39> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<39> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<39> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<39> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<39> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<39> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<39> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<39> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<39> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<39> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<39> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<39> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<39> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<39> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<39> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<39> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<39> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<39> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<39> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<39> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<39> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<39> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<39> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<39> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<39> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<39> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<39> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<39> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<39> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<39> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<39> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<39> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<39> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<39> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<39> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<39> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37;
                 mpl::int_<38>
                     idx38;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2082,7 +2082,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2093,10 +2093,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<40> size
@@ -2104,15 +2104,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<40> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<40> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<40> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<40> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<40> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<40> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<40> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<40> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<40> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<40> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<40> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<40> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<40> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<40> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<40> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<40> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<40> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<40> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<40> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<40> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<40> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<40> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<40> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<40> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<40> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<40> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<40> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<40> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<40> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<40> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<40> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<40> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<40> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<40> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<40> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<40> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<40> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<40> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<40> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<40> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<40> size
@@ -2122,9 +2122,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<40> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<40> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<40> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<40> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<40> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<40> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<40> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<40> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<40> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<40> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<40> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<40> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<40> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<40> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<40> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<40> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<40> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<40> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<40> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<40> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<40> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<40> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<40> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<40> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<40> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<40> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<40> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<40> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<40> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<40> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<40> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<40> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<40> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<40> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<40> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<40> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<40> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<40> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<40> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38;
                 mpl::int_<39>
                     idx39;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2134,7 +2134,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2145,10 +2145,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<41> size
@@ -2156,15 +2156,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<41> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<41> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<41> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<41> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<41> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<41> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<41> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<41> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<41> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<41> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<41> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<41> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<41> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<41> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<41> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<41> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<41> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<41> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<41> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<41> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<41> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<41> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<41> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<41> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<41> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<41> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<41> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<41> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<41> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<41> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<41> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<41> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<41> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<41> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<41> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<41> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<41> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<41> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<41> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<41> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<41> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<41> size
@@ -2174,9 +2174,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<41> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<41> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<41> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<41> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<41> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<41> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<41> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<41> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<41> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<41> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<41> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<41> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<41> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<41> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<41> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<41> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<41> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<41> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<41> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<41> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<41> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<41> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<41> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<41> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<41> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<41> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<41> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<41> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<41> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<41> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<41> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<41> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<41> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<41> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<41> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<41> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<41> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<41> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<41> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<41> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39;
                 mpl::int_<40>
                     idx40;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2186,7 +2186,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2197,10 +2197,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<42> size
@@ -2208,15 +2208,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<42> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<42> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<42> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<42> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<42> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<42> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<42> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<42> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<42> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<42> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<42> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<42> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<42> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<42> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<42> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<42> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<42> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<42> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<42> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<42> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<42> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<42> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<42> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<42> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<42> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<42> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<42> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<42> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<42> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<42> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<42> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<42> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<42> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<42> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<42> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<42> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<42> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<42> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<42> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<42> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<42> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<42> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<42> size
@@ -2226,9 +2226,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<42> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<42> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<42> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<42> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<42> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<42> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<42> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<42> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<42> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<42> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<42> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<42> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<42> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<42> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<42> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<42> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<42> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<42> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<42> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<42> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<42> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<42> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<42> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<42> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<42> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<42> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<42> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<42> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<42> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<42> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<42> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<42> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<42> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<42> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<42> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<42> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<42> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<42> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<42> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<42> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<42> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40;
                 mpl::int_<41>
                     idx41;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2238,7 +2238,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2249,10 +2249,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<43> size
@@ -2260,15 +2260,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<43> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<43> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<43> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<43> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<43> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<43> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<43> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<43> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<43> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<43> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<43> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<43> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<43> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<43> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<43> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<43> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<43> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<43> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<43> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<43> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<43> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<43> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<43> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<43> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<43> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<43> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<43> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<43> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<43> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<43> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<43> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<43> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<43> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<43> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<43> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<43> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<43> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<43> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<43> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<43> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<43> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<43> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<43> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<43> size
@@ -2278,9 +2278,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<43> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<43> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<43> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<43> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<43> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<43> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<43> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<43> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<43> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<43> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<43> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<43> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<43> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<43> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<43> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<43> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<43> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<43> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<43> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<43> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<43> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<43> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<43> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<43> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<43> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<43> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<43> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<43> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<43> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<43> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<43> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<43> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<43> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<43> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<43> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<43> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<43> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<43> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<43> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<43> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<43> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<43> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41;
                 mpl::int_<42>
                     idx42;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2290,7 +2290,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2301,10 +2301,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<44> size
@@ -2312,15 +2312,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<44> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<44> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<44> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<44> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<44> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<44> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<44> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<44> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<44> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<44> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<44> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<44> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<44> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<44> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<44> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<44> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<44> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<44> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<44> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<44> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<44> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<44> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<44> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<44> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<44> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<44> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<44> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<44> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<44> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<44> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<44> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<44> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<44> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<44> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<44> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<44> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<44> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<44> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<44> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<44> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<44> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<44> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<44> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<44> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<44> size
@@ -2330,9 +2330,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<44> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<44> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<44> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<44> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<44> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<44> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<44> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<44> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<44> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<44> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<44> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<44> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<44> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<44> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<44> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<44> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<44> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<44> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<44> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<44> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<44> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<44> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<44> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<44> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<44> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<44> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<44> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<44> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<44> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<44> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<44> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<44> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<44> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<44> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<44> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<44> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<44> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<44> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<44> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<44> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<44> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<44> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<44> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42;
                 mpl::int_<43>
                     idx43;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2342,7 +2342,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2353,10 +2353,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<45> size
@@ -2364,15 +2364,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<45> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<45> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<45> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<45> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<45> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<45> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<45> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<45> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<45> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<45> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<45> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<45> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<45> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<45> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<45> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<45> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<45> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<45> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<45> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<45> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<45> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<45> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<45> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<45> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<45> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<45> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<45> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<45> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<45> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<45> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<45> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<45> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<45> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<45> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<45> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<45> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<45> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<45> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<45> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<45> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<45> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<45> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<45> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<45> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<45> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<45> size
@@ -2382,9 +2382,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<45> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<45> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<45> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<45> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<45> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<45> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<45> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<45> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<45> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<45> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<45> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<45> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<45> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<45> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<45> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<45> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<45> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<45> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<45> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<45> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<45> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<45> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<45> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<45> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<45> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<45> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<45> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<45> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<45> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<45> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<45> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<45> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<45> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<45> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<45> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<45> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<45> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<45> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<45> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<45> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<45> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<45> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<45> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<45> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43;
                 mpl::int_<44>
                     idx44;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2394,7 +2394,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2405,10 +2405,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<46> size
@@ -2416,15 +2416,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<46> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<46> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<46> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<46> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<46> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<46> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<46> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<46> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<46> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<46> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<46> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<46> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<46> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<46> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<46> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<46> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<46> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<46> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<46> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<46> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<46> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<46> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<46> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<46> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<46> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<46> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<46> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<46> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<46> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<46> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<46> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<46> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<46> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<46> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<46> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<46> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<46> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<46> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<46> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<46> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<46> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<46> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<46> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<46> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<46> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<46> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , env ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<46> size
@@ -2434,9 +2434,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<46> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<46> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<46> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<46> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<46> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<46> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<46> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<46> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<46> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<46> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<46> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<46> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<46> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<46> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<46> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<46> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<46> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<46> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<46> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<46> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<46> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<46> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<46> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<46> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<46> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<46> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<46> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<46> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<46> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<46> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<46> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<46> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<46> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<46> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<46> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<46> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<46> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<46> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<46> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<46> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<46> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<46> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<46> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<46> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<46> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44;
                 mpl::int_<45>
                     idx45;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2446,7 +2446,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2457,10 +2457,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<47> size
@@ -2468,15 +2468,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<47> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<47> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<47> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<47> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<47> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<47> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<47> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<47> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<47> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<47> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<47> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<47> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<47> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<47> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<47> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<47> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<47> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<47> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<47> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<47> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<47> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<47> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<47> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<47> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<47> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<47> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<47> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<47> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<47> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<47> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<47> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<47> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<47> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<47> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<47> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<47> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<47> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<47> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<47> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<47> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<47> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<47> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<47> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<47> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<47> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<47> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<47> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , env ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , env ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<47> size
@@ -2486,9 +2486,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<47> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<47> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<47> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<47> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<47> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<47> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<47> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<47> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<47> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<47> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<47> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<47> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<47> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<47> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<47> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<47> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<47> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<47> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<47> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<47> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<47> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<47> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<47> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<47> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<47> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<47> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<47> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<47> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<47> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<47> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<47> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<47> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<47> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<47> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<47> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<47> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<47> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<47> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<47> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<47> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<47> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<47> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<47> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<47> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<47> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<47> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45;
                 mpl::int_<46>
                     idx46;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , env ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2498,7 +2498,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2509,10 +2509,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<48> size
@@ -2520,15 +2520,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<48> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<48> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<48> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<48> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<48> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<48> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<48> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<48> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<48> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<48> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<48> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<48> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<48> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<48> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<48> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<48> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<48> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<48> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<48> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<48> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<48> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<48> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<48> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<48> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<48> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<48> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<48> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<48> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<48> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<48> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<48> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<48> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<48> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<48> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<48> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<48> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<48> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<48> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<48> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<48> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<48> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<48> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<48> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<48> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<48> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<48> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<48> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<47> , mpl::int_<48> ) >::type case47; typedef typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type case_label47; mpl::int_<47> idx47;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , env ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , env ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , env ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<48> size
@@ -2538,9 +2538,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<48> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<48> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<48> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<48> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<48> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<48> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<48> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<48> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<48> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<48> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<48> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<48> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<48> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<48> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<48> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<48> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<48> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<48> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<48> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<48> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<48> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<48> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<48> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<48> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<48> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<48> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<48> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<48> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<48> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<48> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<48> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<48> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<48> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<48> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<48> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<48> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<48> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<48> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<48> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<48> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<48> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<48> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<48> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<48> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<48> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<48> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<48> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46;
                 mpl::int_<47>
                     idx47;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , env ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , env ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2550,7 +2550,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2561,10 +2561,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<49> size
@@ -2572,15 +2572,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<49> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<49> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<49> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<49> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<49> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<49> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<49> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<49> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<49> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<49> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<49> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<49> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<49> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<49> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<49> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<49> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<49> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<49> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<49> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<49> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<49> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<49> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<49> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<49> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<49> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<49> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<49> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<49> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<49> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<49> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<49> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<49> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<49> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<49> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<49> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<49> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<49> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<49> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<49> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<49> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<49> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<49> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<49> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<49> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<49> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<49> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<49> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<47> , mpl::int_<49> ) >::type case47; typedef typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type case_label47; mpl::int_<47> idx47; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<48
> , mpl::int_<49> ) >::type case48; typedef typename proto::result_of::value< typename proto::result_of::child_c< case48 , 0 >::type >::type case_label48; mpl::int_<48> idx48;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , env ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , env ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , env ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , env ); break; case case_label48::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx48, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , ctx ); break; case case_label48::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx48, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<49> size
@@ -2590,9 +2590,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<49> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<49> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<49> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<49> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<49> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<49> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<49> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<49> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<49> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<49> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<49> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<49> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<49> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<49> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<49> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<49> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<49> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<49> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<49> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<49> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<49> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<49> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<49> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<49> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<49> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<49> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<49> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<49> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<49> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<49> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<49> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<49> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<49> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<49> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<49> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<49> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<49> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<49> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<49> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<49> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<49> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<49> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<49> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<49> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<49> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<49> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<49> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<47> , mpl::int_<49> ) >::type case47; typedef typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type case_label47; mpl::int_<47> idx47;
                 mpl::int_<48>
                     idx48;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , env ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , env ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , env ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2602,7 +2602,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }
@@ -2613,10 +2613,10 @@
     
     
     
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<50> size
@@ -2624,15 +2624,15 @@
             ) const
             {
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<50> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<50> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<50> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<50> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<50> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<50> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<50> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<50> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<50> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<50> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<50> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<50> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<50> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<50> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<50> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<50> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<50> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<50> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<50> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<50> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<50> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<50> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<50> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<50> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<50> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<50> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<50> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<50> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<50> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<50> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<50> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<50> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<50> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<50> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<50> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<50> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<50> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<50> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<50> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<50> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<50> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<50> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<50> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<50> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<50> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<50> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<50> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<47> , mpl::int_<50> ) >::type case47; typedef typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type case_label47; mpl::int_<47> idx47; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<48
> , mpl::int_<50> ) >::type case48; typedef typename proto::result_of::value< typename proto::result_of::child_c< case48 , 0 >::type >::type case_label48; mpl::int_<48> idx48; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<49> , mpl::int_<50> ) >::type case49; typedef typename proto::result_of::value< typename proto::result_of::child_c< case49 , 0 >::type >::type case_label49; mpl::int_<49> idx49;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , env ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , env ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , env ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , env ); break; case case_label48::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx48, size ) ) , env ); break; case case_label49::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx49, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , ctx ); break; case case_label48::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx48, size ) ) , ctx ); break; case case_label49::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx49, size ) ) , ctx ); break;
                 }
             }
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<50> size
@@ -2642,9 +2642,9 @@
                 typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<50> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<50> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<50> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<50> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<50> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<50> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<50> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<50> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<50> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<50> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<50> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<50> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<50> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<50> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<50> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<50> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<50> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<50> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<50> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<50> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<50> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<50> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<50> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<50> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<50> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<50> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<50> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<50> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<50> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<50> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<50> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<50> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<50> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<50> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<50> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<50> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<50> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<50> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<50> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<50> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<50> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<50> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<50> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<50> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<50> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<50> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<50> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<47> , mpl::int_<50> ) >::type case47; typedef typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type case_label47; mpl::int_<47> idx47; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<48
> , mpl::int_<50> ) >::type case48; typedef typename proto::result_of::value< typename proto::result_of::child_c< case48 , 0 >::type >::type case_label48; mpl::int_<48> idx48;
                 mpl::int_<49>
                     idx49;
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , env ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , env ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , env ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , env ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , env ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , env ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , env ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , env ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , env ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , env ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , env ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , env ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , env ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , env ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , env ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , env ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , env ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , env ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , env ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , env ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , env ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , env ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , env ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , env ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , env ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , env ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , env ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , env ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , env ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , env ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , env ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , env ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , env ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , env ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , env ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , env ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , env ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , env ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , env ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , env ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , env ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , env ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , env ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , env ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , env ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , env ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , env ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , env ); break; case case_label48::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx48, size ) ) , env ); break;
+ case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , ctx ); break; case case_label48::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx48, size ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
@@ -2654,7 +2654,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -12,7 +12,7 @@
     
     
     
- template <typename Env, typename Try, typename A0>
+ template <typename Context, typename Try, typename A0>
         typename boost::enable_if<
             proto::matches<
                 A0
@@ -20,15 +20,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); }
         }
- template <typename Env, typename Try, typename A0>
+ template <typename Context, typename Try, typename A0>
         typename boost::disable_if<
             proto::matches<
                 A0
@@ -36,11 +36,11 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
             
             catch(...)
@@ -49,7 +49,7 @@
                     proto::child_c<0>(
                         a0
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -59,7 +59,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1>
+ template <typename Context, typename Try, typename A0 , typename A1>
         typename boost::enable_if<
             proto::matches<
                 A1
@@ -67,15 +67,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1>
+ template <typename Context, typename Try, typename A0 , typename A1>
         typename boost::disable_if<
             proto::matches<
                 A1
@@ -83,20 +83,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a1
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -106,7 +106,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2>
         typename boost::enable_if<
             proto::matches<
                 A2
@@ -114,15 +114,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2>
         typename boost::disable_if<
             proto::matches<
                 A2
@@ -130,20 +130,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a2
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -153,7 +153,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
         typename boost::enable_if<
             proto::matches<
                 A3
@@ -161,15 +161,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
         typename boost::disable_if<
             proto::matches<
                 A3
@@ -177,20 +177,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a3
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -200,7 +200,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename boost::enable_if<
             proto::matches<
                 A4
@@ -208,15 +208,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename boost::disable_if<
             proto::matches<
                 A4
@@ -224,20 +224,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a4
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -247,7 +247,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename boost::enable_if<
             proto::matches<
                 A5
@@ -255,15 +255,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename boost::disable_if<
             proto::matches<
                 A5
@@ -271,20 +271,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a5
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -294,7 +294,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename boost::enable_if<
             proto::matches<
                 A6
@@ -302,15 +302,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename boost::disable_if<
             proto::matches<
                 A6
@@ -318,20 +318,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a6
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -341,7 +341,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename boost::enable_if<
             proto::matches<
                 A7
@@ -349,15 +349,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename boost::disable_if<
             proto::matches<
                 A7
@@ -365,20 +365,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a7
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -388,7 +388,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename boost::enable_if<
             proto::matches<
                 A8
@@ -396,15 +396,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename boost::disable_if<
             proto::matches<
                 A8
@@ -412,20 +412,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a8
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -435,7 +435,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename boost::enable_if<
             proto::matches<
                 A9
@@ -443,15 +443,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename boost::disable_if<
             proto::matches<
                 A9
@@ -459,19 +459,19 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a9
                     )
- , env);
+ , ctx);
             }
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -12,7 +12,7 @@
     
     
     
- template <typename Env, typename Try, typename A0>
+ template <typename Context, typename Try, typename A0>
         typename boost::enable_if<
             proto::matches<
                 A0
@@ -20,15 +20,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); }
         }
- template <typename Env, typename Try, typename A0>
+ template <typename Context, typename Try, typename A0>
         typename boost::disable_if<
             proto::matches<
                 A0
@@ -36,11 +36,11 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
             
             catch(...)
@@ -49,7 +49,7 @@
                     proto::child_c<0>(
                         a0
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -59,7 +59,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1>
+ template <typename Context, typename Try, typename A0 , typename A1>
         typename boost::enable_if<
             proto::matches<
                 A1
@@ -67,15 +67,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1>
+ template <typename Context, typename Try, typename A0 , typename A1>
         typename boost::disable_if<
             proto::matches<
                 A1
@@ -83,20 +83,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a1
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -106,7 +106,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2>
         typename boost::enable_if<
             proto::matches<
                 A2
@@ -114,15 +114,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2>
         typename boost::disable_if<
             proto::matches<
                 A2
@@ -130,20 +130,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a2
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -153,7 +153,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
         typename boost::enable_if<
             proto::matches<
                 A3
@@ -161,15 +161,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
         typename boost::disable_if<
             proto::matches<
                 A3
@@ -177,20 +177,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a3
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -200,7 +200,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename boost::enable_if<
             proto::matches<
                 A4
@@ -208,15 +208,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename boost::disable_if<
             proto::matches<
                 A4
@@ -224,20 +224,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a4
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -247,7 +247,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename boost::enable_if<
             proto::matches<
                 A5
@@ -255,15 +255,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename boost::disable_if<
             proto::matches<
                 A5
@@ -271,20 +271,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a5
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -294,7 +294,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename boost::enable_if<
             proto::matches<
                 A6
@@ -302,15 +302,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename boost::disable_if<
             proto::matches<
                 A6
@@ -318,20 +318,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a6
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -341,7 +341,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename boost::enable_if<
             proto::matches<
                 A7
@@ -349,15 +349,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename boost::disable_if<
             proto::matches<
                 A7
@@ -365,20 +365,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a7
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -388,7 +388,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename boost::enable_if<
             proto::matches<
                 A8
@@ -396,15 +396,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename boost::disable_if<
             proto::matches<
                 A8
@@ -412,20 +412,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a8
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -435,7 +435,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename boost::enable_if<
             proto::matches<
                 A9
@@ -443,15 +443,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename boost::disable_if<
             proto::matches<
                 A9
@@ -459,20 +459,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a9
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -482,7 +482,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         typename boost::enable_if<
             proto::matches<
                 A10
@@ -490,15 +490,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         typename boost::disable_if<
             proto::matches<
                 A10
@@ -506,20 +506,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a10
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -529,7 +529,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         typename boost::enable_if<
             proto::matches<
                 A11
@@ -537,15 +537,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         typename boost::disable_if<
             proto::matches<
                 A11
@@ -553,20 +553,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a11
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -576,7 +576,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         typename boost::enable_if<
             proto::matches<
                 A12
@@ -584,15 +584,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         typename boost::disable_if<
             proto::matches<
                 A12
@@ -600,20 +600,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a12
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -623,7 +623,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         typename boost::enable_if<
             proto::matches<
                 A13
@@ -631,15 +631,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         typename boost::disable_if<
             proto::matches<
                 A13
@@ -647,20 +647,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a13
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -670,7 +670,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         typename boost::enable_if<
             proto::matches<
                 A14
@@ -678,15 +678,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         typename boost::disable_if<
             proto::matches<
                 A14
@@ -694,20 +694,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a14
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -717,7 +717,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         typename boost::enable_if<
             proto::matches<
                 A15
@@ -725,15 +725,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         typename boost::disable_if<
             proto::matches<
                 A15
@@ -741,20 +741,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a15
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -764,7 +764,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         typename boost::enable_if<
             proto::matches<
                 A16
@@ -772,15 +772,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         typename boost::disable_if<
             proto::matches<
                 A16
@@ -788,20 +788,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a16
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -811,7 +811,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         typename boost::enable_if<
             proto::matches<
                 A17
@@ -819,15 +819,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         typename boost::disable_if<
             proto::matches<
                 A17
@@ -835,20 +835,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a17
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -858,7 +858,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         typename boost::enable_if<
             proto::matches<
                 A18
@@ -866,15 +866,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         typename boost::disable_if<
             proto::matches<
                 A18
@@ -882,20 +882,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a18
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -905,7 +905,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         typename boost::enable_if<
             proto::matches<
                 A19
@@ -913,15 +913,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         typename boost::disable_if<
             proto::matches<
                 A19
@@ -929,19 +929,19 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a19
                     )
- , env);
+ , ctx);
             }
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -12,7 +12,7 @@
     
     
     
- template <typename Env, typename Try, typename A0>
+ template <typename Context, typename Try, typename A0>
         typename boost::enable_if<
             proto::matches<
                 A0
@@ -20,15 +20,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); }
         }
- template <typename Env, typename Try, typename A0>
+ template <typename Context, typename Try, typename A0>
         typename boost::disable_if<
             proto::matches<
                 A0
@@ -36,11 +36,11 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
             
             catch(...)
@@ -49,7 +49,7 @@
                     proto::child_c<0>(
                         a0
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -59,7 +59,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1>
+ template <typename Context, typename Try, typename A0 , typename A1>
         typename boost::enable_if<
             proto::matches<
                 A1
@@ -67,15 +67,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1>
+ template <typename Context, typename Try, typename A0 , typename A1>
         typename boost::disable_if<
             proto::matches<
                 A1
@@ -83,20 +83,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a1
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -106,7 +106,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2>
         typename boost::enable_if<
             proto::matches<
                 A2
@@ -114,15 +114,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2>
         typename boost::disable_if<
             proto::matches<
                 A2
@@ -130,20 +130,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a2
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -153,7 +153,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
         typename boost::enable_if<
             proto::matches<
                 A3
@@ -161,15 +161,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
         typename boost::disable_if<
             proto::matches<
                 A3
@@ -177,20 +177,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a3
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -200,7 +200,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename boost::enable_if<
             proto::matches<
                 A4
@@ -208,15 +208,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename boost::disable_if<
             proto::matches<
                 A4
@@ -224,20 +224,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a4
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -247,7 +247,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename boost::enable_if<
             proto::matches<
                 A5
@@ -255,15 +255,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename boost::disable_if<
             proto::matches<
                 A5
@@ -271,20 +271,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a5
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -294,7 +294,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename boost::enable_if<
             proto::matches<
                 A6
@@ -302,15 +302,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename boost::disable_if<
             proto::matches<
                 A6
@@ -318,20 +318,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a6
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -341,7 +341,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename boost::enable_if<
             proto::matches<
                 A7
@@ -349,15 +349,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename boost::disable_if<
             proto::matches<
                 A7
@@ -365,20 +365,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a7
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -388,7 +388,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename boost::enable_if<
             proto::matches<
                 A8
@@ -396,15 +396,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename boost::disable_if<
             proto::matches<
                 A8
@@ -412,20 +412,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a8
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -435,7 +435,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename boost::enable_if<
             proto::matches<
                 A9
@@ -443,15 +443,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename boost::disable_if<
             proto::matches<
                 A9
@@ -459,20 +459,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a9
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -482,7 +482,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         typename boost::enable_if<
             proto::matches<
                 A10
@@ -490,15 +490,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         typename boost::disable_if<
             proto::matches<
                 A10
@@ -506,20 +506,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a10
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -529,7 +529,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         typename boost::enable_if<
             proto::matches<
                 A11
@@ -537,15 +537,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         typename boost::disable_if<
             proto::matches<
                 A11
@@ -553,20 +553,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a11
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -576,7 +576,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         typename boost::enable_if<
             proto::matches<
                 A12
@@ -584,15 +584,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         typename boost::disable_if<
             proto::matches<
                 A12
@@ -600,20 +600,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a12
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -623,7 +623,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         typename boost::enable_if<
             proto::matches<
                 A13
@@ -631,15 +631,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         typename boost::disable_if<
             proto::matches<
                 A13
@@ -647,20 +647,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a13
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -670,7 +670,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         typename boost::enable_if<
             proto::matches<
                 A14
@@ -678,15 +678,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         typename boost::disable_if<
             proto::matches<
                 A14
@@ -694,20 +694,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a14
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -717,7 +717,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         typename boost::enable_if<
             proto::matches<
                 A15
@@ -725,15 +725,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         typename boost::disable_if<
             proto::matches<
                 A15
@@ -741,20 +741,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a15
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -764,7 +764,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         typename boost::enable_if<
             proto::matches<
                 A16
@@ -772,15 +772,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         typename boost::disable_if<
             proto::matches<
                 A16
@@ -788,20 +788,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a16
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -811,7 +811,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         typename boost::enable_if<
             proto::matches<
                 A17
@@ -819,15 +819,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         typename boost::disable_if<
             proto::matches<
                 A17
@@ -835,20 +835,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a17
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -858,7 +858,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         typename boost::enable_if<
             proto::matches<
                 A18
@@ -866,15 +866,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         typename boost::disable_if<
             proto::matches<
                 A18
@@ -882,20 +882,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a18
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -905,7 +905,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         typename boost::enable_if<
             proto::matches<
                 A19
@@ -913,15 +913,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         typename boost::disable_if<
             proto::matches<
                 A19
@@ -929,20 +929,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a19
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -952,7 +952,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         typename boost::enable_if<
             proto::matches<
                 A20
@@ -960,15 +960,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         typename boost::disable_if<
             proto::matches<
                 A20
@@ -976,20 +976,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a20
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -999,7 +999,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         typename boost::enable_if<
             proto::matches<
                 A21
@@ -1007,15 +1007,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         typename boost::disable_if<
             proto::matches<
                 A21
@@ -1023,20 +1023,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a21
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1046,7 +1046,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         typename boost::enable_if<
             proto::matches<
                 A22
@@ -1054,15 +1054,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         typename boost::disable_if<
             proto::matches<
                 A22
@@ -1070,20 +1070,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a22
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1093,7 +1093,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         typename boost::enable_if<
             proto::matches<
                 A23
@@ -1101,15 +1101,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         typename boost::disable_if<
             proto::matches<
                 A23
@@ -1117,20 +1117,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a23
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1140,7 +1140,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         typename boost::enable_if<
             proto::matches<
                 A24
@@ -1148,15 +1148,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         typename boost::disable_if<
             proto::matches<
                 A24
@@ -1164,20 +1164,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a24
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1187,7 +1187,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         typename boost::enable_if<
             proto::matches<
                 A25
@@ -1195,15 +1195,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         typename boost::disable_if<
             proto::matches<
                 A25
@@ -1211,20 +1211,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a25
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1234,7 +1234,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         typename boost::enable_if<
             proto::matches<
                 A26
@@ -1242,15 +1242,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         typename boost::disable_if<
             proto::matches<
                 A26
@@ -1258,20 +1258,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a26
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1281,7 +1281,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         typename boost::enable_if<
             proto::matches<
                 A27
@@ -1289,15 +1289,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         typename boost::disable_if<
             proto::matches<
                 A27
@@ -1305,20 +1305,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a27
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1328,7 +1328,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         typename boost::enable_if<
             proto::matches<
                 A28
@@ -1336,15 +1336,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         typename boost::disable_if<
             proto::matches<
                 A28
@@ -1352,20 +1352,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a28
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1375,7 +1375,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         typename boost::enable_if<
             proto::matches<
                 A29
@@ -1383,15 +1383,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         typename boost::disable_if<
             proto::matches<
                 A29
@@ -1399,19 +1399,19 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a29
                     )
- , env);
+ , ctx);
             }
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -12,7 +12,7 @@
     
     
     
- template <typename Env, typename Try, typename A0>
+ template <typename Context, typename Try, typename A0>
         typename boost::enable_if<
             proto::matches<
                 A0
@@ -20,15 +20,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); }
         }
- template <typename Env, typename Try, typename A0>
+ template <typename Context, typename Try, typename A0>
         typename boost::disable_if<
             proto::matches<
                 A0
@@ -36,11 +36,11 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
             
             catch(...)
@@ -49,7 +49,7 @@
                     proto::child_c<0>(
                         a0
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -59,7 +59,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1>
+ template <typename Context, typename Try, typename A0 , typename A1>
         typename boost::enable_if<
             proto::matches<
                 A1
@@ -67,15 +67,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1>
+ template <typename Context, typename Try, typename A0 , typename A1>
         typename boost::disable_if<
             proto::matches<
                 A1
@@ -83,20 +83,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a1
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -106,7 +106,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2>
         typename boost::enable_if<
             proto::matches<
                 A2
@@ -114,15 +114,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2>
         typename boost::disable_if<
             proto::matches<
                 A2
@@ -130,20 +130,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a2
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -153,7 +153,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
         typename boost::enable_if<
             proto::matches<
                 A3
@@ -161,15 +161,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
         typename boost::disable_if<
             proto::matches<
                 A3
@@ -177,20 +177,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a3
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -200,7 +200,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename boost::enable_if<
             proto::matches<
                 A4
@@ -208,15 +208,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename boost::disable_if<
             proto::matches<
                 A4
@@ -224,20 +224,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a4
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -247,7 +247,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename boost::enable_if<
             proto::matches<
                 A5
@@ -255,15 +255,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename boost::disable_if<
             proto::matches<
                 A5
@@ -271,20 +271,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a5
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -294,7 +294,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename boost::enable_if<
             proto::matches<
                 A6
@@ -302,15 +302,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename boost::disable_if<
             proto::matches<
                 A6
@@ -318,20 +318,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a6
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -341,7 +341,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename boost::enable_if<
             proto::matches<
                 A7
@@ -349,15 +349,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename boost::disable_if<
             proto::matches<
                 A7
@@ -365,20 +365,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a7
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -388,7 +388,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename boost::enable_if<
             proto::matches<
                 A8
@@ -396,15 +396,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename boost::disable_if<
             proto::matches<
                 A8
@@ -412,20 +412,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a8
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -435,7 +435,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename boost::enable_if<
             proto::matches<
                 A9
@@ -443,15 +443,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename boost::disable_if<
             proto::matches<
                 A9
@@ -459,20 +459,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a9
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -482,7 +482,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         typename boost::enable_if<
             proto::matches<
                 A10
@@ -490,15 +490,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         typename boost::disable_if<
             proto::matches<
                 A10
@@ -506,20 +506,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a10
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -529,7 +529,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         typename boost::enable_if<
             proto::matches<
                 A11
@@ -537,15 +537,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         typename boost::disable_if<
             proto::matches<
                 A11
@@ -553,20 +553,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a11
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -576,7 +576,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         typename boost::enable_if<
             proto::matches<
                 A12
@@ -584,15 +584,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         typename boost::disable_if<
             proto::matches<
                 A12
@@ -600,20 +600,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a12
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -623,7 +623,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         typename boost::enable_if<
             proto::matches<
                 A13
@@ -631,15 +631,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         typename boost::disable_if<
             proto::matches<
                 A13
@@ -647,20 +647,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a13
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -670,7 +670,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         typename boost::enable_if<
             proto::matches<
                 A14
@@ -678,15 +678,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         typename boost::disable_if<
             proto::matches<
                 A14
@@ -694,20 +694,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a14
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -717,7 +717,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         typename boost::enable_if<
             proto::matches<
                 A15
@@ -725,15 +725,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         typename boost::disable_if<
             proto::matches<
                 A15
@@ -741,20 +741,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a15
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -764,7 +764,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         typename boost::enable_if<
             proto::matches<
                 A16
@@ -772,15 +772,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         typename boost::disable_if<
             proto::matches<
                 A16
@@ -788,20 +788,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a16
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -811,7 +811,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         typename boost::enable_if<
             proto::matches<
                 A17
@@ -819,15 +819,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         typename boost::disable_if<
             proto::matches<
                 A17
@@ -835,20 +835,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a17
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -858,7 +858,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         typename boost::enable_if<
             proto::matches<
                 A18
@@ -866,15 +866,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         typename boost::disable_if<
             proto::matches<
                 A18
@@ -882,20 +882,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a18
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -905,7 +905,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         typename boost::enable_if<
             proto::matches<
                 A19
@@ -913,15 +913,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         typename boost::disable_if<
             proto::matches<
                 A19
@@ -929,20 +929,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a19
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -952,7 +952,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         typename boost::enable_if<
             proto::matches<
                 A20
@@ -960,15 +960,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         typename boost::disable_if<
             proto::matches<
                 A20
@@ -976,20 +976,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a20
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -999,7 +999,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         typename boost::enable_if<
             proto::matches<
                 A21
@@ -1007,15 +1007,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         typename boost::disable_if<
             proto::matches<
                 A21
@@ -1023,20 +1023,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a21
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1046,7 +1046,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         typename boost::enable_if<
             proto::matches<
                 A22
@@ -1054,15 +1054,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         typename boost::disable_if<
             proto::matches<
                 A22
@@ -1070,20 +1070,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a22
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1093,7 +1093,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         typename boost::enable_if<
             proto::matches<
                 A23
@@ -1101,15 +1101,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         typename boost::disable_if<
             proto::matches<
                 A23
@@ -1117,20 +1117,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a23
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1140,7 +1140,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         typename boost::enable_if<
             proto::matches<
                 A24
@@ -1148,15 +1148,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         typename boost::disable_if<
             proto::matches<
                 A24
@@ -1164,20 +1164,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a24
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1187,7 +1187,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         typename boost::enable_if<
             proto::matches<
                 A25
@@ -1195,15 +1195,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         typename boost::disable_if<
             proto::matches<
                 A25
@@ -1211,20 +1211,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a25
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1234,7 +1234,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         typename boost::enable_if<
             proto::matches<
                 A26
@@ -1242,15 +1242,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         typename boost::disable_if<
             proto::matches<
                 A26
@@ -1258,20 +1258,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a26
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1281,7 +1281,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         typename boost::enable_if<
             proto::matches<
                 A27
@@ -1289,15 +1289,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         typename boost::disable_if<
             proto::matches<
                 A27
@@ -1305,20 +1305,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a27
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1328,7 +1328,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         typename boost::enable_if<
             proto::matches<
                 A28
@@ -1336,15 +1336,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         typename boost::disable_if<
             proto::matches<
                 A28
@@ -1352,20 +1352,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a28
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1375,7 +1375,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         typename boost::enable_if<
             proto::matches<
                 A29
@@ -1383,15 +1383,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         typename boost::disable_if<
             proto::matches<
                 A29
@@ -1399,20 +1399,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a29
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1422,7 +1422,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
         typename boost::enable_if<
             proto::matches<
                 A30
@@ -1430,15 +1430,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
         typename boost::disable_if<
             proto::matches<
                 A30
@@ -1446,20 +1446,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a30
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1469,7 +1469,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
         typename boost::enable_if<
             proto::matches<
                 A31
@@ -1477,15 +1477,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
         typename boost::disable_if<
             proto::matches<
                 A31
@@ -1493,20 +1493,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a31
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1516,7 +1516,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
         typename boost::enable_if<
             proto::matches<
                 A32
@@ -1524,15 +1524,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
         typename boost::disable_if<
             proto::matches<
                 A32
@@ -1540,20 +1540,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a32
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1563,7 +1563,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
         typename boost::enable_if<
             proto::matches<
                 A33
@@ -1571,15 +1571,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
         typename boost::disable_if<
             proto::matches<
                 A33
@@ -1587,20 +1587,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a33
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1610,7 +1610,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
         typename boost::enable_if<
             proto::matches<
                 A34
@@ -1618,15 +1618,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
         typename boost::disable_if<
             proto::matches<
                 A34
@@ -1634,20 +1634,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a34
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1657,7 +1657,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
         typename boost::enable_if<
             proto::matches<
                 A35
@@ -1665,15 +1665,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
         typename boost::disable_if<
             proto::matches<
                 A35
@@ -1681,20 +1681,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a35
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1704,7 +1704,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
         typename boost::enable_if<
             proto::matches<
                 A36
@@ -1712,15 +1712,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
         typename boost::disable_if<
             proto::matches<
                 A36
@@ -1728,20 +1728,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a36
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1751,7 +1751,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
         typename boost::enable_if<
             proto::matches<
                 A37
@@ -1759,15 +1759,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
         typename boost::disable_if<
             proto::matches<
                 A37
@@ -1775,20 +1775,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a37
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1798,7 +1798,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
         typename boost::enable_if<
             proto::matches<
                 A38
@@ -1806,15 +1806,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
         typename boost::disable_if<
             proto::matches<
                 A38
@@ -1822,20 +1822,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a38
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1845,7 +1845,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
         typename boost::enable_if<
             proto::matches<
                 A39
@@ -1853,15 +1853,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
         typename boost::disable_if<
             proto::matches<
                 A39
@@ -1869,19 +1869,19 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a39
                     )
- , env);
+ , ctx);
             }
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -12,7 +12,7 @@
     
     
     
- template <typename Env, typename Try, typename A0>
+ template <typename Context, typename Try, typename A0>
         typename boost::enable_if<
             proto::matches<
                 A0
@@ -20,15 +20,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); }
         }
- template <typename Env, typename Try, typename A0>
+ template <typename Context, typename Try, typename A0>
         typename boost::disable_if<
             proto::matches<
                 A0
@@ -36,11 +36,11 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
             
             catch(...)
@@ -49,7 +49,7 @@
                     proto::child_c<0>(
                         a0
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -59,7 +59,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1>
+ template <typename Context, typename Try, typename A0 , typename A1>
         typename boost::enable_if<
             proto::matches<
                 A1
@@ -67,15 +67,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1>
+ template <typename Context, typename Try, typename A0 , typename A1>
         typename boost::disable_if<
             proto::matches<
                 A1
@@ -83,20 +83,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a1
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -106,7 +106,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2>
         typename boost::enable_if<
             proto::matches<
                 A2
@@ -114,15 +114,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2>
         typename boost::disable_if<
             proto::matches<
                 A2
@@ -130,20 +130,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a2
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -153,7 +153,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
         typename boost::enable_if<
             proto::matches<
                 A3
@@ -161,15 +161,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3>
         typename boost::disable_if<
             proto::matches<
                 A3
@@ -177,20 +177,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a3
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -200,7 +200,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename boost::enable_if<
             proto::matches<
                 A4
@@ -208,15 +208,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename boost::disable_if<
             proto::matches<
                 A4
@@ -224,20 +224,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a4
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -247,7 +247,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename boost::enable_if<
             proto::matches<
                 A5
@@ -255,15 +255,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename boost::disable_if<
             proto::matches<
                 A5
@@ -271,20 +271,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a5
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -294,7 +294,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename boost::enable_if<
             proto::matches<
                 A6
@@ -302,15 +302,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename boost::disable_if<
             proto::matches<
                 A6
@@ -318,20 +318,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a6
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -341,7 +341,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename boost::enable_if<
             proto::matches<
                 A7
@@ -349,15 +349,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename boost::disable_if<
             proto::matches<
                 A7
@@ -365,20 +365,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a7
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -388,7 +388,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename boost::enable_if<
             proto::matches<
                 A8
@@ -396,15 +396,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename boost::disable_if<
             proto::matches<
                 A8
@@ -412,20 +412,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a8
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -435,7 +435,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename boost::enable_if<
             proto::matches<
                 A9
@@ -443,15 +443,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename boost::disable_if<
             proto::matches<
                 A9
@@ -459,20 +459,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a9
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -482,7 +482,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         typename boost::enable_if<
             proto::matches<
                 A10
@@ -490,15 +490,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         typename boost::disable_if<
             proto::matches<
                 A10
@@ -506,20 +506,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a10
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -529,7 +529,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         typename boost::enable_if<
             proto::matches<
                 A11
@@ -537,15 +537,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         typename boost::disable_if<
             proto::matches<
                 A11
@@ -553,20 +553,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a11
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -576,7 +576,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         typename boost::enable_if<
             proto::matches<
                 A12
@@ -584,15 +584,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         typename boost::disable_if<
             proto::matches<
                 A12
@@ -600,20 +600,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a12
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -623,7 +623,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         typename boost::enable_if<
             proto::matches<
                 A13
@@ -631,15 +631,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         typename boost::disable_if<
             proto::matches<
                 A13
@@ -647,20 +647,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a13
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -670,7 +670,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         typename boost::enable_if<
             proto::matches<
                 A14
@@ -678,15 +678,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         typename boost::disable_if<
             proto::matches<
                 A14
@@ -694,20 +694,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a14
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -717,7 +717,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         typename boost::enable_if<
             proto::matches<
                 A15
@@ -725,15 +725,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         typename boost::disable_if<
             proto::matches<
                 A15
@@ -741,20 +741,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a15
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -764,7 +764,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         typename boost::enable_if<
             proto::matches<
                 A16
@@ -772,15 +772,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         typename boost::disable_if<
             proto::matches<
                 A16
@@ -788,20 +788,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a16
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -811,7 +811,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         typename boost::enable_if<
             proto::matches<
                 A17
@@ -819,15 +819,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         typename boost::disable_if<
             proto::matches<
                 A17
@@ -835,20 +835,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a17
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -858,7 +858,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         typename boost::enable_if<
             proto::matches<
                 A18
@@ -866,15 +866,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         typename boost::disable_if<
             proto::matches<
                 A18
@@ -882,20 +882,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a18
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -905,7 +905,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         typename boost::enable_if<
             proto::matches<
                 A19
@@ -913,15 +913,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         typename boost::disable_if<
             proto::matches<
                 A19
@@ -929,20 +929,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a19
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -952,7 +952,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         typename boost::enable_if<
             proto::matches<
                 A20
@@ -960,15 +960,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         typename boost::disable_if<
             proto::matches<
                 A20
@@ -976,20 +976,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a20
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -999,7 +999,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         typename boost::enable_if<
             proto::matches<
                 A21
@@ -1007,15 +1007,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         typename boost::disable_if<
             proto::matches<
                 A21
@@ -1023,20 +1023,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a21
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1046,7 +1046,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         typename boost::enable_if<
             proto::matches<
                 A22
@@ -1054,15 +1054,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         typename boost::disable_if<
             proto::matches<
                 A22
@@ -1070,20 +1070,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a22
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1093,7 +1093,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         typename boost::enable_if<
             proto::matches<
                 A23
@@ -1101,15 +1101,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         typename boost::disable_if<
             proto::matches<
                 A23
@@ -1117,20 +1117,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a23
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1140,7 +1140,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         typename boost::enable_if<
             proto::matches<
                 A24
@@ -1148,15 +1148,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         typename boost::disable_if<
             proto::matches<
                 A24
@@ -1164,20 +1164,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a24
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1187,7 +1187,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         typename boost::enable_if<
             proto::matches<
                 A25
@@ -1195,15 +1195,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         typename boost::disable_if<
             proto::matches<
                 A25
@@ -1211,20 +1211,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a25
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1234,7 +1234,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         typename boost::enable_if<
             proto::matches<
                 A26
@@ -1242,15 +1242,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         typename boost::disable_if<
             proto::matches<
                 A26
@@ -1258,20 +1258,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a26
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1281,7 +1281,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         typename boost::enable_if<
             proto::matches<
                 A27
@@ -1289,15 +1289,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         typename boost::disable_if<
             proto::matches<
                 A27
@@ -1305,20 +1305,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a27
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1328,7 +1328,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         typename boost::enable_if<
             proto::matches<
                 A28
@@ -1336,15 +1336,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         typename boost::disable_if<
             proto::matches<
                 A28
@@ -1352,20 +1352,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a28
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1375,7 +1375,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         typename boost::enable_if<
             proto::matches<
                 A29
@@ -1383,15 +1383,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         typename boost::disable_if<
             proto::matches<
                 A29
@@ -1399,20 +1399,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a29
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1422,7 +1422,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
         typename boost::enable_if<
             proto::matches<
                 A30
@@ -1430,15 +1430,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
         typename boost::disable_if<
             proto::matches<
                 A30
@@ -1446,20 +1446,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a30
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1469,7 +1469,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
         typename boost::enable_if<
             proto::matches<
                 A31
@@ -1477,15 +1477,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
         typename boost::disable_if<
             proto::matches<
                 A31
@@ -1493,20 +1493,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a31
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1516,7 +1516,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
         typename boost::enable_if<
             proto::matches<
                 A32
@@ -1524,15 +1524,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
         typename boost::disable_if<
             proto::matches<
                 A32
@@ -1540,20 +1540,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a32
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1563,7 +1563,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
         typename boost::enable_if<
             proto::matches<
                 A33
@@ -1571,15 +1571,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
         typename boost::disable_if<
             proto::matches<
                 A33
@@ -1587,20 +1587,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a33
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1610,7 +1610,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
         typename boost::enable_if<
             proto::matches<
                 A34
@@ -1618,15 +1618,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
         typename boost::disable_if<
             proto::matches<
                 A34
@@ -1634,20 +1634,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a34
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1657,7 +1657,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
         typename boost::enable_if<
             proto::matches<
                 A35
@@ -1665,15 +1665,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
         typename boost::disable_if<
             proto::matches<
                 A35
@@ -1681,20 +1681,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a35
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1704,7 +1704,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
         typename boost::enable_if<
             proto::matches<
                 A36
@@ -1712,15 +1712,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
         typename boost::disable_if<
             proto::matches<
                 A36
@@ -1728,20 +1728,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a36
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1751,7 +1751,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
         typename boost::enable_if<
             proto::matches<
                 A37
@@ -1759,15 +1759,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
         typename boost::disable_if<
             proto::matches<
                 A37
@@ -1775,20 +1775,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a37
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1798,7 +1798,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
         typename boost::enable_if<
             proto::matches<
                 A38
@@ -1806,15 +1806,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
         typename boost::disable_if<
             proto::matches<
                 A38
@@ -1822,20 +1822,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a38
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1845,7 +1845,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
         typename boost::enable_if<
             proto::matches<
                 A39
@@ -1853,15 +1853,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
         typename boost::disable_if<
             proto::matches<
                 A39
@@ -1869,20 +1869,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a39
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1892,7 +1892,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40>
         typename boost::enable_if<
             proto::matches<
                 A40
@@ -1900,15 +1900,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40>
         typename boost::disable_if<
             proto::matches<
                 A40
@@ -1916,20 +1916,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a40
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1939,7 +1939,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41>
         typename boost::enable_if<
             proto::matches<
                 A41
@@ -1947,15 +1947,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41>
         typename boost::disable_if<
             proto::matches<
                 A41
@@ -1963,20 +1963,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a41
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -1986,7 +1986,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42>
         typename boost::enable_if<
             proto::matches<
                 A42
@@ -1994,15 +1994,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42>
         typename boost::disable_if<
             proto::matches<
                 A42
@@ -2010,20 +2010,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a42
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -2033,7 +2033,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43>
         typename boost::enable_if<
             proto::matches<
                 A43
@@ -2041,15 +2041,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43>
         typename boost::disable_if<
             proto::matches<
                 A43
@@ -2057,20 +2057,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a43
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -2080,7 +2080,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
         typename boost::enable_if<
             proto::matches<
                 A44
@@ -2088,15 +2088,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
         typename boost::disable_if<
             proto::matches<
                 A44
@@ -2104,20 +2104,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a44
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -2127,7 +2127,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
         typename boost::enable_if<
             proto::matches<
                 A45
@@ -2135,15 +2135,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
         typename boost::disable_if<
             proto::matches<
                 A45
@@ -2151,20 +2151,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a45
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -2174,7 +2174,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
         typename boost::enable_if<
             proto::matches<
                 A46
@@ -2182,15 +2182,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
         typename boost::disable_if<
             proto::matches<
                 A46
@@ -2198,20 +2198,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a46
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -2221,7 +2221,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
         typename boost::enable_if<
             proto::matches<
                 A47
@@ -2229,15 +2229,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type::type & ) { eval(
proto::child_c<1>(a47), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type::type & ) { eval(
proto::child_c<1>(a47), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
         typename boost::disable_if<
             proto::matches<
                 A47
@@ -2245,20 +2245,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a47
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -2268,7 +2268,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
         typename boost::enable_if<
             proto::matches<
                 A48
@@ -2276,15 +2276,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type::type & ) { eval(
proto::child_c<1>(a47), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A48 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a48), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type::type & ) { eval(
proto::child_c<1>(a47), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A48 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a48), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
         typename boost::disable_if<
             proto::matches<
                 A48
@@ -2292,20 +2292,20 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type::type & ) { eval(
proto::child_c<1>(a47), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type::type & ) { eval(
proto::child_c<1>(a47), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a48
                     )
- , env);
+ , ctx);
             }
         }
     
@@ -2315,7 +2315,7 @@
     
     
     
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
         typename boost::enable_if<
             proto::matches<
                 A49
@@ -2323,15 +2323,15 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type::type & ) { eval(
proto::child_c<1>(a47), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A48 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a48), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A49 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a49), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type::type & ) { eval(
proto::child_c<1>(a47), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A48 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a48), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A49 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a49), ctx); }
         }
- template <typename Env, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
+ template <typename Context, typename Try, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
         typename boost::disable_if<
             proto::matches<
                 A49
@@ -2339,19 +2339,19 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) const
+ operator()(Context & ctx, Try const & try_, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
- catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), env); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), env); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), env
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type::type & ) { eval(
proto::child_c<1>(a47), env); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A48 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a48), env); }
+ catch( typename proto::result_of::value< typename proto::result_of::child_c< A0 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a0), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A1 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a1), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A2 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a2), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A3 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a3), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A4 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a4), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A5 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a5), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A6 , 0 >::type >::type::type & ) { eval(proto
::child_c<1>(a6), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A7 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a7), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A8 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a8), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A9 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a9), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A10 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a10), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A11 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a11), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A12 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a12), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A13 , 0 >::type >::type::t
ype & ) { eval(proto::child_c<1>(a13), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A14 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a14), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A15 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a15), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A16 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a16), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A17 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a17), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A18 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a18), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A19 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a19), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c<
 A20 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a20), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A21 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a21), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A22 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a22), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A23 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a23), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A24 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a24), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A25 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a25), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A26 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a26), ctx); } catch( typename proto::result_of::value< typename
 proto::result_of::child_c< A27 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a27), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A28 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a28), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A29 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a29), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A30 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a30), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A31 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a31), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A32 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a32), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A33 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a33), ctx); } catch( typename proto:
:result_of::value< typename proto::result_of::child_c< A34 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a34), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A35 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a35), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A36 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a36), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A37 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a37), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A38 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a38), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a39), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a40), ctx
); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a41), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a42), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a43), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a44), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a45), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a46), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type::type & ) { eval(
proto::child_c<1>(a47), ctx); } catch( typename proto::result_of::value< typename proto::result_of::child_c< A48 , 0 >::type >::type::type & ) { eval(proto::child_c<1>(a48), ctx); }
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
                         a49
                     )
- , env);
+ , ctx);
             }
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/switch.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/switch.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/switch.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -62,7 +62,7 @@
                         cases, BOOST_PP_CAT(idx, N), size \
                     ) \
                 ) \
- , env \
+ , ctx \
             ); \
             break;
     /**/
@@ -82,10 +82,10 @@
 #endif
 
 #else
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<PHOENIX_ITERATION> size
@@ -97,16 +97,16 @@
                   , PHOENIX_SWITCH_EVAL_TYPEDEF_R
                   , PHOENIX_ITERATION
                 )
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_SWITCH_EVAL_R, _)
                 }
             }
 
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
             result_type
             evaluate(
- Env & env
+ Context & ctx
               , Cond const & cond
               , Cases const & cases
               , mpl::int_<PHOENIX_ITERATION> size
@@ -120,7 +120,7 @@
                 )
                 mpl::int_<BOOST_PP_DEC(PHOENIX_ITERATION)>
                     BOOST_PP_CAT(idx, BOOST_PP_DEC(PHOENIX_ITERATION));
- switch(eval(cond, env))
+ switch(eval(cond, ctx))
                 {
                     BOOST_PP_REPEAT(
                         BOOST_PP_DEC(PHOENIX_ITERATION)
@@ -138,7 +138,7 @@
                                   , size
                                 )
                             )
- , env
+ , ctx
                         );
                 }
             }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/try_catch_eval.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/try_catch_eval.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/try_catch_eval.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -43,7 +43,7 @@
>::type::type & \
             ) \
             { \
- eval(proto::child_c<1>(BOOST_PP_CAT(a, N)), env); \
+ eval(proto::child_c<1>(BOOST_PP_CAT(a, N)), ctx); \
             } \
     /**/
 
@@ -63,15 +63,7 @@
 
 #else
 
-// **FIXME**: why?
-#ifdef catch
-#undef catch
-#endif
-#ifdef try
-#undef try
-#endif
-
- template <typename Env, typename Try, PHOENIX_typename_A>
+ template <typename Context, typename Try, PHOENIX_typename_A>
         typename boost::enable_if<
             proto::matches<
                 BOOST_PP_CAT(A, BOOST_PP_DEC(PHOENIX_ITERATION))
@@ -79,16 +71,16 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, PHOENIX_A_const_ref_a) const
+ operator()(Context & ctx, Try const & try_, PHOENIX_A_const_ref_a) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
             BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_TRY_CATCH_EVAL_R, _)
         }
 
- template <typename Env, typename Try, PHOENIX_typename_A>
+ template <typename Context, typename Try, PHOENIX_typename_A>
         typename boost::disable_if<
             proto::matches<
                 BOOST_PP_CAT(A, BOOST_PP_DEC(PHOENIX_ITERATION))
@@ -96,11 +88,11 @@
>
           , result_type
>::type
- operator()(Env & env, Try const & try_, PHOENIX_A_const_ref_a) const
+ operator()(Context & ctx, Try const & try_, PHOENIX_A_const_ref_a) const
         {
             try
             {
- eval(proto::child_c<0>(try_), env);
+ eval(proto::child_c<0>(try_), ctx);
             }
             BOOST_PP_REPEAT(
                 BOOST_PP_DEC(PHOENIX_ITERATION)
@@ -112,7 +104,7 @@
                     proto::child_c<0>(
                         BOOST_PP_CAT(a, BOOST_PP_DEC(PHOENIX_ITERATION))
                     )
- , env);
+ , ctx);
             }
         }
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/do_while.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/do_while.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/do_while.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -23,13 +23,13 @@
     {
         typedef void result_type;
 
- template <typename Env, typename Cond, typename Do>
+ template <typename Context, typename Cond, typename Do>
         result_type
- operator()(Env& env, Cond const& cond, Do const& do_) const
+ operator()(Context& ctx, Cond const& cond, Do const& do_) const
         {
             do
- eval(do_, env);
- while (eval(cond, env));
+ eval(do_, ctx);
+ while (eval(cond, ctx));
         }
     };
     

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/if.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/if.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/if.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -51,26 +51,26 @@
     {
         typedef void result_type;
         
- template<typename Env, typename Cond, typename Then>
+ template<typename Context, typename Cond, typename Then>
         result_type
- operator()(Env & env, Cond const & cond, Then const & then) const
+ operator()(Context & ctx, Cond const & cond, Then const & then) const
         {
- if( eval( cond, env ) )
- eval( then, env );
+ if( eval( cond, ctx ) )
+ eval( then, ctx );
         }
         
- template<typename Env, typename Cond, typename Then, typename Else>
+ template<typename Context, typename Cond, typename Then, typename Else>
         result_type
         operator()(
- Env & env
+ Context & ctx
             , Cond const & cond
             , Then const & then
             , Else const & else_) const
         {
- if( eval( cond, env ) )
- eval( then, env );
+ if( eval( cond, ctx ) )
+ eval( then, ctx );
             else
- eval( else_, env );
+ eval( else_, ctx );
         }
     };
     

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -158,18 +158,18 @@
     {
         typedef void result_type;
         
- template <typename Env>
+ template <typename Context>
         result_type
- operator()(Env & env) const
+ operator()(Context & ctx) const
         {
         }
 
- template <typename Env, typename Cond, typename Cases>
+ template <typename Context, typename Cond, typename Cases>
         result_type
- operator()(Env & env, Cond const & cond, Cases const & cases) const
+ operator()(Context & ctx, Cond const & cond, Cases const & cases) const
         {
             this->evaluate(
- env
+ ctx
                   , cond
                   , cases
                   , typename boost::result_of<detail::switch_size(Cases)>::type()

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/throw.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/throw.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/throw.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -49,18 +49,18 @@
     {
         typedef void result_type;
 
- template <typename Env>
+ template <typename Context>
         result_type
- operator()(Env& env) const
+ operator()(Context& ctx) const
         {
             throw;
         }
 
- template <typename Env, typename ThrowExpr>
+ template <typename Context, typename ThrowExpr>
         result_type
- operator()(Env& env, ThrowExpr const& throw_expr) const
+ operator()(Context& ctx, ThrowExpr const& throw_expr) const
         {
- throw eval(throw_expr, env);
+ throw eval(throw_expr, ctx);
         }
     };
     

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/while.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/while.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/while.hpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -22,13 +22,13 @@
     {
         typedef void result_type;
 
- template <typename Env, typename Cond, typename Do>
+ template <typename Context, typename Cond, typename Do>
         result_type
- operator()(Env& env, Cond const& cond, Do const& do_) const
+ operator()(Context& ctx, Cond const& cond, Do const& do_) const
         {
- while(eval(cond, env))
+ while(eval(cond, ctx))
             {
- eval(do_, env);
+ eval(do_, ctx);
             }
         }
     };

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/test/scope/let_tests.cpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/test/scope/let_tests.cpp (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/test/scope/let_tests.cpp 2011-01-29 15:40:37 EST (Sat, 29 Jan 2011)
@@ -50,7 +50,6 @@
             (x) == x
         );
     }
-/*
     {
         int x = 1, y = 10;
         BOOST_TEST(
@@ -182,7 +181,6 @@
         let(_a = _1)[_a = _2](i, 2);
         BOOST_TEST(i == 2);
     }
- */
 
     return boost::report_errors();
 }


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk