@@ -226,6 +226,13 @@ function wrap_assignments(isscalar, assignments; let_block = false)
226226    end 
227227end 
228228
229+ function  wrap_inbounds (isscalar)
230+     function  wrapper (expr)
231+         Func (expr. args, [], :(@inbounds  begin ; $ (toexpr (expr. body)); end ))
232+     end 
233+     return  isscalar ?  wrapper :  (wrapper, wrapper)
234+ end 
235+ 
229236function  wrap_parameter_dependencies (sys:: AbstractSystem , isscalar)
230237    wrap_assignments (isscalar, [eq. lhs ←  eq. rhs for  eq in  parameter_dependencies (sys)])
231238end 
785792SymbolicIndexingInterface. supports_tuple_observed (:: AbstractSystem ) =  true 
786793
787794function  SymbolicIndexingInterface. observed (
788-         sys:: AbstractSystem , sym; eval_expression =  false , eval_module =  @__MODULE__ )
795+         sys:: AbstractSystem , sym; eval_expression =  false , eval_module =  @__MODULE__ , checkbounds  =   true )
789796    if  has_index_cache (sys) &&  (ic =  get_index_cache (sys)) != =  nothing 
790797        if  sym isa  Symbol
791798            _sym =  get (ic. symbol_to_variable, sym, nothing )
@@ -808,7 +815,7 @@ function SymbolicIndexingInterface.observed(
808815            end 
809816        end 
810817    end 
811-     _fn =  build_explicit_observed_function (sys, sym; eval_expression, eval_module)
818+     _fn =  build_explicit_observed_function (sys, sym; eval_expression, eval_module, checkbounds )
812819
813820    if  is_time_dependent (sys)
814821        return  _fn
@@ -1671,11 +1678,12 @@ struct ObservedFunctionCache{S}
16711678    steady_state:: Bool 
16721679    eval_expression:: Bool 
16731680    eval_module:: Module 
1681+     checkbounds:: Bool 
16741682end 
16751683
16761684function  ObservedFunctionCache (
1677-         sys; steady_state =  false , eval_expression =  false , eval_module =  @__MODULE__ )
1678-     return  ObservedFunctionCache (sys, Dict (), steady_state, eval_expression, eval_module)
1685+         sys; steady_state =  false , eval_expression =  false , eval_module =  @__MODULE__ , checkbounds  =   true )
1686+     return  ObservedFunctionCache (sys, Dict (), steady_state, eval_expression, eval_module, checkbounds )
16791687end 
16801688
16811689#  This is hit because ensemble problems do a deepcopy
@@ -1694,7 +1702,7 @@ function (ofc::ObservedFunctionCache)(obsvar, args...)
16941702    obs =  get! (ofc. dict, value (obsvar)) do 
16951703        SymbolicIndexingInterface. observed (
16961704            ofc. sys, obsvar; eval_expression =  ofc. eval_expression,
1697-             eval_module =  ofc. eval_module)
1705+             eval_module =  ofc. eval_module, checkbounds  =  ofc . checkbounds )
16981706    end 
16991707    if  ofc. steady_state
17001708        obs =  let  fn =  obs
0 commit comments