/// <inheritdoc />
        public CodeLocation GetSourceLocationForMethod(string assemblyPath, int methodToken)
        {
            if (assemblyPath == null)
                throw new ArgumentNullException("assemblyPath");

            CciModuleCache data;

            if (!cache.TryGetValue(assemblyPath, out data))
            {
                if (unavailable.Contains(assemblyPath))
                    return CodeLocation.Unknown;

                try
                {
                    data = new CciModuleCache(new FileSystem(), assemblyPath);
                }
                catch (InvalidOperationException)
                {
                    unavailable.Add(assemblyPath);
                    return CodeLocation.Unknown;
                }

                cache.Add(assemblyPath, data);
            }

            return data.GetMethodLocation(Convert.ToUInt32(methodToken));
        }
        /// <inheritdoc />
        public CodeLocation GetSourceLocationForMethod(string assemblyPath, int methodToken)
        {
            if (assemblyPath == null)
            {
                throw new ArgumentNullException("assemblyPath");
            }

            CciModuleCache data;

            if (!cache.TryGetValue(assemblyPath, out data))
            {
                if (unavailable.Contains(assemblyPath))
                {
                    return(CodeLocation.Unknown);
                }

                try
                {
                    data = new CciModuleCache(new FileSystem(), assemblyPath);
                }
                catch (InvalidOperationException)
                {
                    unavailable.Add(assemblyPath);
                    return(CodeLocation.Unknown);
                }

                cache.Add(assemblyPath, data);
            }

            return(data.GetMethodLocation(Convert.ToUInt32(methodToken)));
        }