public override OutputEntry Process(Dependency dep)
        {
            var fields = new List<ProcessedField>();

            if (!Dependency(dep, (f, v, m) => fields.Add(new ProcessedField("Dependency " + f, v, m))))
                return null;

            if (!Matches(Source, dep.Source, (f, v, m) => fields.Add(new ProcessedField("Source " + f, v, m))))
                return null;

            if (!Matches(Target, dep.Target, (f, v, m) => fields.Add(new ProcessedField("Target " + f, v, m))))
                return null;

            var messsage = new OutputMessage();
            messsage.Append("Dependency between ")
                .Append(dep.Source, OutputMessage.ProjInfo.Name)
                .Append(" and ")
                .Append(dep.Target, OutputMessage.ProjInfo.Name)
                .Append(Allow ? "" : " not")
                .Append(" allowed");

            return new DependencyRuleMatch(Allow, "Dependency", Severity, messsage, this, dep.AsList(), fields);
        }