public static void ParseAndExecute(IShell shell, IStream stream, string line)
 {
     try
     {
         //explicit try to bubble up io exceptions
         var tokens = Tokens(line); //throws parse exceptions
         if (tokens != null && tokens.Length > 0)
         {
             shell.Execute(stream, tokens);
         }
     }
     catch (Exception ex) { stream.HandleException(ex); }
 }