private static async Task ProcessArguments(CommandLineArguments args)
        {
            var directory = new DirectoryInfo(args.Output);

            if (!directory.Exists)
            {
                directory.Create();
            }

            Story story;
            var   file = new FileInfo(args.Input);

            using (var reader = file.OpenRead())
            {
                story = await new SkillFlowInterpreter().Interpret(reader);
            }


            var context   = new CodeGeneratorContext(args.ToCodeGenerator());
            var generator = new CodeGenerator.CodeGenerator();
            await generator.Generate(story, context);

            var newStoryStream = new MemoryStream {
                Capacity = (int)file.Length
            };

            using (var tempStream = file.OpenRead())
            {
                tempStream.CopyTo(newStoryStream);
            }
            context.OtherFiles.Add(file.Name, newStoryStream);
            await context.Output(directory.FullName);
        }