public static SourceCodeEditor showInCodeEditor(this SourceCodeEditor codeEditor, Java_Class _class, Java_Method method)
        {
            //var _class = classes_bySignature[classSignature];
            var file = _class.file();

            codeEditor.open(file);
            var lineNumber = 0;

            if (method.isNull() || method.LineNumbers.isNull())
            {
                return(codeEditor);
            }
            foreach (var item in method.LineNumbers)
            {
                if (item.Line_Number > 1)
                {
                    if (lineNumber == 0 || item.Line_Number < lineNumber)
                    {
                        lineNumber = item.Line_Number;
                    }
                }
            }

            //this to match the method name to the location (vs the first method)
            var sourceCodeLines = codeEditor.getSourceCode().lines(false);

            if (method.Name.regEx("<.*init*.>").isFalse())
            {
                for (int i = 0; i < 10; i++)
                {
                    if (lineNumber > i && sourceCodeLines.size() > lineNumber - i)
                    {
                        var line = sourceCodeLines[lineNumber - i];
                        if (sourceCodeLines[lineNumber - i].contains(method.Name) &&
                            line.regEx("public|private|internal|protected"))
                        {
                            lineNumber = lineNumber - i + 1;
                            break;
                        }
                    }
                }
            }
            codeEditor.gotoLine(lineNumber, 4);

            return(codeEditor);
        }
        public static List <MethodCall> methodRefs(this Java_Method method, Java_Class methodClass)
        {
            var file             = methodClass.file();
            var constants_byType = method.constantsPool_byType(methodClass);

            if (constants_byType.hasKey("Methodref") || constants_byType.hasKey("InterfaceMethodref"))
            {
                var methodRefs_AtLines = method.getConstantsPoolUsage_byIndex_WithLineNumbers();
                var methodRefs         = new List <MethodCall>();

                if (constants_byType.hasKey("Methodref"))
                {
                    methodRefs.AddRange(constants_byType["Methodref"].get_MethodsRef_FromContantsPool(file, false, methodRefs_AtLines));
                }

                if (constants_byType.hasKey("InterfaceMethodref"))
                {
                    methodRefs.AddRange(constants_byType["InterfaceMethodref"].get_MethodsRef_FromContantsPool(file, true, methodRefs_AtLines));
                }
                return(methodRefs);
            }
            return(new List <MethodCall>());
        }
		public static List<MethodCall> methodRefs(this Java_Method method,  Java_Class methodClass)
		{
			var file = methodClass.file();
			var constants_byType = method.constantsPool_byType(methodClass);			
			if (constants_byType.hasKey("Methodref") || constants_byType.hasKey("InterfaceMethodref"))
			{
				var methodRefs_AtLines = method.getConstantsPoolUsage_byIndex_WithLineNumbers();
				var methodRefs = new List<MethodCall>();
				
				if (constants_byType.hasKey("Methodref"))
					methodRefs.AddRange(constants_byType["Methodref"].get_MethodsRef_FromContantsPool(file, false,  methodRefs_AtLines));
					
				if (constants_byType.hasKey("InterfaceMethodref"))
					methodRefs.AddRange(constants_byType["InterfaceMethodref"].get_MethodsRef_FromContantsPool(file, true,  methodRefs_AtLines));
				return methodRefs;
			}
			return new List<MethodCall>();
		}
 public static MethodCall_Location methodCall_Location(this Java_Class _class, int line, int pc)
 {
     return(new MethodCall_Location {
         File = _class.file(), Line = line, Pc = pc
     });
 }
		public static SourceCodeEditor showInCodeEditor(this SourceCodeEditor codeEditor ,Java_Class _class, Java_Method method)
		{										
			//var _class = classes_bySignature[classSignature];
			var file = _class.file();
			codeEditor.open(file);
			var lineNumber = 0; 
			if (method.isNull() ||method.LineNumbers.isNull())
				return codeEditor;
			foreach(var item in method.LineNumbers)
				if (item.Line_Number > 1)
					if (lineNumber == 0 || item.Line_Number < lineNumber)
						lineNumber = item.Line_Number;
						
			//this to match the method name to the location (vs the first method)
			var sourceCodeLines = codeEditor.getSourceCode().lines(false);
			if (method.Name.regEx("<.*init*.>").isFalse())
			{
				for(int i=0 ; i < 10 ; i++)
				{
					
					if (lineNumber > i &&   sourceCodeLines.size() > lineNumber-i)
					{
						var line = sourceCodeLines[lineNumber-i];					
						if (sourceCodeLines[lineNumber-i].contains(method.Name) &&
							line.regEx("public|private|internal|protected"))
						{						
							lineNumber = lineNumber -i + 1;						
							break;
						}
					}
				}
			}			
			codeEditor.gotoLine(lineNumber,4);
			
			return codeEditor;
   		}