public XTMFCommand GetCombinedCommand()
 {
     // Generate a command the combines all of the contained commands
     return(XTMFCommand.CreateCommand("Batch command",
                                      (ref string error) =>
     {
         foreach (var command in Commands)
         {
             if (!command.Do(ref error))
             {
                 return false;
             }
         }
         return true;
     },
                                      (ref string error) =>
     {
         foreach (var command in ((IEnumerable <XTMFCommand>)Commands).Reverse())
         {
             if (!command.Undo(ref error))
             {
                 return false;
             }
         }
         return true;
     },
                                      (ref string error) =>
     {
         foreach (var command in Commands)
         {
             if (!command.Redo(ref error))
             {
                 return false;
             }
         }
         return true;
     }));
 }