private static void Main(string[] arguments)
        {
            var numberOfArguments = arguments.Length;

            const int numberOfArgumentsExpected = 2;

            if (numberOfArgumentsExpected != numberOfArguments)
            {
                throw new Exception(
                          string.Format("ERROR: expected {0} arguments, got {1}.",
                                        numberOfArgumentsExpected, numberOfArguments));
            }

            var mode = arguments[0];

            const string theOnlyModeHandled = "shell";

            if (
                !string.Equals(theOnlyModeHandled, mode,
                               StringComparison.OrdinalIgnoreCase))
            {
                throw new Exception(
                          string.Format("ERROR, expect mode: {0}, requested mode was: {1}.",
                                        theOnlyModeHandled, mode));
            }

            var acknowledgementFilePath = arguments[1];

            File.WriteAllText(acknowledgementFilePath, "READY");


            do
            {
                var pathOfFileToBeProcessed = Console.ReadLine();

                if (null == pathOfFileToBeProcessed)
                {
                    SignalFailedRequestToProcessFile();
                    return;
                }

                if ("end".Equals(pathOfFileToBeProcessed, StringComparison.OrdinalIgnoreCase))
                {
                    return;
                }

                var pathOfFileForYamlResult = Console.ReadLine();

                if (null == pathOfFileForYamlResult)
                {
                    SignalFailedRequestToProcessFile();
                    return;
                }

                try
                {
                    FileProcessor.DiscoverStructure(pathOfFileToBeProcessed, pathOfFileForYamlResult);
                    SignalSuccessfulRequestToProcessFile();
                }
                catch (Exception)
                {
                    SignalFailedRequestToProcessFile();
                }
            } while (true);
        }