public StatesParserContext(IStates states, string promptPrefix)
 {
     _promptPrefix = promptPrefix;
     Commands      = new[]
     {
         new CommandInformation()
         {
             ArgumentCount         = 1,
             CommandText           = "clear",
             CommandImplementation = (args, parserContextManager) =>
             {
                 states.Clear();
                 return(false);
             }
         },
         new CommandInformation()
         {
             ArgumentCount         = 1,
             CommandText           = "print",
             CommandImplementation = (args, parserContextManager) =>
             {
                 states.ToList().ForEach(state => Console.WriteLine(state.Name));
                 return(false);
             }
         },
         new CommandInformation()
         {
             ArgumentCount         = 2,
             CommandText           = "add",
             CommandImplementation = (args, parserContextManager) =>
             {
                 if (states.Any(state => state.Name == args[1]))
                 {
                     Console.WriteLine($"Duplicate state ignored: {args[1]}");
                 }
                 else
                 {
                     var state = new TestCases.PublicObjects.State()
                     {
                         Name = args[1]
                     };
                     states.Add(state);
                 }
                 return(false);
             }
         },
         new CommandInformation()
         {
             ArgumentCount         = 2,
             CommandText           = "delete",
             CommandImplementation = (args, parserContextManager) =>
             {
                 var item = states.SingleOrDefault(state => state.Name == args[1]);
                 if (item == default(IState))
                 {
                     Console.WriteLine($"Missing state not deleted: {args[1]}");
                 }
                 else
                 {
                     states.Remove(item);
                 }
                 return(false);
             }
         }
     };
 }