public static void AssertEditViewIsVisible(
            this IApp app,
            string description = null,
            string projectName = null,
            string[] tags      = null,
            string startTime   = null,
            string stopTime    = null,
            bool?isStopped     = null,
            string duration    = null,
            string startDate   = null,
            bool?isBillable    = null)
        {
            app.WaitForElement(EditTimeEntry.View);

            List <string> wrongFields = new List <string>();

            if (description != null && !app.DescriptionIsCorrect(description))
            {
                wrongFields.Add("description");
            }

            if (projectName != null && !app.ProjectNameIsCorrect(projectName))
            {
                wrongFields.Add("project name");
            }

            if (tags != null && !app.TagsAreCorrect(tags))
            {
                wrongFields.Add("tags");
            }

            if (startTime != null && !app.StartTimeIsCorrect(startTime))
            {
                wrongFields.Add("start time");
            }

            if (stopTime != null && !app.StopTimeIsCorrect(startTime))
            {
                wrongFields.Add("stop time");
            }

            if (isStopped != null && !app.StoppedStateIsCorrect(isStopped.Value))
            {
                wrongFields.Add("stopped state");
            }

            if (duration != null && !app.DurationIsCorrect(duration))
            {
                wrongFields.Add("duration");
            }

            if (startDate != null && !app.StartDateIsCorrect(startDate))
            {
                wrongFields.Add("start date");
            }

            if (isBillable != null && !app.BillableStateIsCorrect((bool)isBillable))
            {
                wrongFields.Add("billable state");
            }

            if (wrongFields.Any())
            {
                throw new EditViewAssertionException($"Edit view is open, but {string.Join(", ", wrongFields)} {(wrongFields.Count > 1 ? "are" : "is")} wrong.");
            }
        }