////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        public static string ConvertJavaOutputToVS(string line)
        {
            //
            // Parse and reformat Java error and warning output into a Visual Studio 'jump to line' style.
            //

            StringBuilder vsOutputBuilder = new StringBuilder(line);

            string [] patterns = new string []
            {
                // Android\com\google\android\vending\licensing\LicenseChecker.java:257: warning: [deprecation] toGMTString() in Date has been deprecated
                "^(?<sourcefile>.?.?[^:]*.*?):(?<row>[0-9]*): (?<message>.*$)",
            };

            foreach (string pattern in patterns)
            {
                Regex regExMatcher = new Regex(pattern, RegexOptions.Compiled);

                Match regExMatch = regExMatcher.Match(line);

                if (regExMatch.Success)
                {
                    string sourcefile = regExMatch.Result("${sourcefile}");

                    string row = regExMatch.Result("${row}");

                    string column = regExMatch.Result("${column}");

                    string message = regExMatch.Result("${message}");

                    vsOutputBuilder.Clear();

                    if (!string.IsNullOrWhiteSpace(sourcefile) && !sourcefile.Equals("${sourcefile}"))
                    {
                        vsOutputBuilder.Append(PathUtils.ConvertPathCygwinToWindows(sourcefile));
                    }

                    if (!string.IsNullOrWhiteSpace(row) && !row.Equals("${row}"))
                    {
                        if (string.IsNullOrWhiteSpace(column) && !column.Equals("${column}"))
                        {
                            vsOutputBuilder.AppendFormat("({0},{1})", row, column);
                        }
                        else
                        {
                            vsOutputBuilder.AppendFormat("({0})", row);
                        }
                    }

                    vsOutputBuilder.Append(": ");

                    if (!string.IsNullOrWhiteSpace(message))
                    {
                        vsOutputBuilder.Append(message);
                    }

                    break;
                }
            }

            vsOutputBuilder.Replace("error: ", "error : ");

            vsOutputBuilder.Replace("warning: ", "warning : ");

            return(vsOutputBuilder.ToString());
        }