public Ret Invoke(Arg1 arg1, Arg2 arg2, Arg3 arg3)
 {
     // swallow all exceptions so that simulation can still progress
     try
     {
         return(function(arg1, arg2, arg3));
     }
     catch (Exception e)
     {
         FARLogger.InfoFormat("FARAtmosphere.{0}: exception {1}\n{2}", Name, e.Message, e.StackTrace);
         return(Default(arg1, arg2, arg3));
     }
 }