private bool IsInvalidCall(MethodNode callingMethod, MethodNode calledMethod)
        {
            var aggregateOfCalledMethod = this.aggregateForMethod.GetOrDefault(calledMethod);
            var aggregateOfCallingMethod = this.aggregateForMethod.GetOrDefault(callingMethod);

            return PatternMatch.For<Tuple<AggregateNode, AggregateNode>, bool>()
                .When(x => x.Item1 == x.Item2).Return(_ => false)
                .When(x => x.Item1 == null && x.Item2 == null).Return(_ => false)
                .When(x => x.Item1 != null && x.Item2 == null).Return(_ => false)
                .When(x => x.Item1 == null && x.Item2 != null).Return(t => calledMethod.GetContainer() != aggregateOfCalledMethod)
                .Default(_ => true)
                .Match(Tuple.Create(aggregateOfCallingMethod, aggregateOfCalledMethod));
        }