controlled_step_result try_step_v1( System system , StateInOut &x , time_type &t , time_type &dt )
 {
     typename boost::unwrap_reference< System >::type &sys = system;
     m_dxdt_resizer.adjust_size( x , boost::bind( &generic_controlled_stepper::template resize_m_dxdt_impl< StateInOut > , boost::ref( *this ) , _1 ) );
     sys( x , m_dxdt.m_v ,t );
     return try_step( system , x , m_dxdt.m_v , t , dt );
 }
 controlled_step_result try_step( System system , const StateInOut &x , time_type &t , time_type &dt )
 {
     m_xnew_resizer.adjust_size( x , boost::bind( &generic_controlled_stepper::template resize_m_xnew_impl< state_type > , boost::ref( *this ) , _1 ) );
     controlled_step_result result = try_step( system , x , t , m_xnew.m_v , dt );
     if( result == success )
     {
         boost::numeric::odeint::copy( m_xnew.m_v , x );
     }
     return result;
 }
 boost::numeric::odeint::controlled_step_result
 try_step( System sys , state_type &x , time_type &t , time_type &dt )
 {
     m_xnew_resizer.adjust_size( x , detail::bind( &controller_type::template resize_m_xnew< state_type > , detail::ref( *this ) , detail::_1 ) );
     boost::numeric::odeint::controlled_step_result res = try_step( sys , x , t , m_xnew.m_v , dt );
     if( res == success )
     {
         boost::numeric::odeint::copy( m_xnew.m_v , x );
     }
     return res;
 }