public static List <KeyValuePair <IMethod, INode> > calledIMethods_getMappings(this O2MappedAstData o2MappedAstData, IMethod iMethod)
        {
            //"in Called IMETHODS".debug();\
            var calledIMethodsMapping = new List <KeyValuePair <IMethod, INode> >();

            if (iMethod != null)
            {
                //  "-------------------".info();
                var methodDeclaration = o2MappedAstData.methodDeclaration(iMethod);
                if (methodDeclaration == null)
                {
                    return(calledIMethodsMapping);
                }

                // handle invocations via MemberReferenceExpression
                var memberReferenceExpressions = methodDeclaration.iNodes <INode, MemberReferenceExpression>();
                foreach (var memberReferenceExpression in memberReferenceExpressions)
                {
                    var iMethodFromRef = o2MappedAstData.iMethod(memberReferenceExpression);
                    if (iMethodFromRef.notNull())
                    {
                        calledIMethodsMapping.Add(iMethodFromRef.iMethodMapping(memberReferenceExpression));
                    }
                    else
                    {
                        var iMethodOrProperty = o2MappedAstData.fromMemberReferenceExpressionGetIMethodOrProperty(memberReferenceExpression);
                        if (iMethodOrProperty is IMethod)
                        {
                            calledIMethodsMapping.Add((iMethodOrProperty as IMethod).iMethodMapping(memberReferenceExpression));
                        }
                        //else
                        //	"NOT Resolved for: {0}".error(memberReferenceExpression.MemberName);
                    }
                }
//                    calledIMethods.add();

                // handle invocations via InvocationExpression
                var invocationExpressions = methodDeclaration.iNodes <INode, InvocationExpression>();
                foreach (var invocationExpression in invocationExpressions)
                {
                    calledIMethodsMapping.add(o2MappedAstData.iMethod(invocationExpression).iMethodMapping(invocationExpression));
                }

                // handle contructors
                var objectCreateExpressions = methodDeclaration.iNodes <INode, ObjectCreateExpression>();
                //"objectCreateExpressions: {0}".format(objectCreateExpressions.Count).info();
                foreach (var objectCreateExpression in objectCreateExpressions)
                {
                    calledIMethodsMapping.add(o2MappedAstData.iMethod(objectCreateExpression).iMethodMapping(objectCreateExpression));
                }
            }
            //return calledIMethods;
            return(calledIMethodsMapping);
        }
        public static string parentMethodSignature(this O2MappedAstData astData, INode iNode)
        {
            var methodDeclaration = iNode.parent <MethodDeclaration>();

            if (methodDeclaration.notNull())
            {
                var iMethod = astData.iMethod(methodDeclaration);
                if (iMethod.notNull())
                {
                    return(iMethod.fullName());
                }
            }
            return("");
        }