private static void CheckVisibleConditionEquality(FormFilterCondition templateCondition, FormFilterCondition formCondition, FormTemplate template, Form form)
        {
            if (templateCondition == null)
            {
                Assert.IsNull(formCondition);
                return;
            }

            Assert.AreEqual(templateCondition.GetType(), formCondition.GetType());
            FilterProperty propertyFilter = templateCondition as FilterProperty;

            if (propertyFilter != null)
            {
                FilterProperty formProperty = (FilterProperty)formCondition;
                Assert.AreEqual(propertyFilter.IsConform, formProperty.IsConform);
                Assert.AreEqual(propertyFilter.Value, formProperty.Value);
                Assert.AreEqual(propertyFilter.NotApplicable, formProperty.NotApplicable);
                Guid itemId = form.Items.Find((item) => item.QuestionId == propertyFilter.ItemId).Id;
                Assert.AreEqual(itemId, formProperty.ItemId);
            }
            else
            {
                FilterCombination combination = (FilterCombination)templateCondition;
                FilterCombination formComb    = (FilterCombination)formCondition;
                Assert.AreEqual(combination.Type, formComb.Type);
                CheckVisibleConditionEquality(combination.LeftFilter, formComb.LeftFilter, template, form);
                CheckVisibleConditionEquality(combination.RightFilter, formComb.RightFilter, template, form);
            }
        }