private MemberViewModel GetViewModelForMethod(MethodInfo methodInfo)
        {
            MemberViewModel vm;
            if (_viewModelsDictionary.ContainsKey(methodInfo))
            {
                var typeViewModel = GetViewModelForType(methodInfo.DeclaringType);
                vm = _viewModelsDictionary[methodInfo];
                vm.Background = typeViewModel.Background;
                vm.Foreground = typeViewModel.Foreground;
                return vm;
            }

            if (IsPropertyAccessor(methodInfo))
            {
                var propertyInfo = Helper.GetAccessorProperty(methodInfo.MemberReference);
                var typeViewModel = GetViewModelForType(propertyInfo.DeclaringType);

                if (_viewModelsDictionary.ContainsKey(propertyInfo))
                {
                    vm = _viewModelsDictionary[propertyInfo];
                    vm.Background = typeViewModel.Background;
                    vm.Foreground = typeViewModel.Foreground;
                    return vm;
                }
                var pvm = new PropertyViewModel(propertyInfo)
                {
                    Background = typeViewModel.Background,
                    Foreground = typeViewModel.Foreground,
                    ToolTip = typeViewModel.Name
                };
                _viewModelsDictionary.Add(propertyInfo, pvm);
                return pvm;
            }
            if (IsEventAccessor(methodInfo))
            {
                var eventInfo = Helper.GetAccessorEvent(methodInfo.MemberReference);
                var typeViewModel = GetViewModelForType(eventInfo.DeclaringType);
                if (_viewModelsDictionary.ContainsKey(eventInfo))
                {
                    vm = _viewModelsDictionary[eventInfo];
                    vm.Background = typeViewModel.Background;
                    vm.Foreground = typeViewModel.Foreground;
                    return vm;
                }
                var evm = new EventViewModel(eventInfo)
                {
                    Background = typeViewModel.Background,
                    Foreground = typeViewModel.Foreground,
                    ToolTip = typeViewModel.Name
                };
                _viewModelsDictionary.Add(eventInfo, evm);
                return evm;
            }

            var tvm = GetViewModelForType(methodInfo.DeclaringType);
            var mvm = new MethodViewModel(methodInfo)
            {
                Background = tvm.Background,
                Foreground = tvm.Foreground,
                ToolTip = tvm.Name
            };
            _viewModelsDictionary.Add(methodInfo, mvm);
            return mvm;
        }
        private MemberViewModel GetViewModelForField(FieldInfo fieldInfo)
        {
            MemberViewModel vm;
            if (_viewModelsDictionary.ContainsKey(fieldInfo))
            {
                var typeViewModel = GetViewModelForType(fieldInfo.DeclaringType);
                vm = _viewModelsDictionary[fieldInfo];
                vm.Background = typeViewModel.Background;
                vm.Foreground = typeViewModel.Foreground;
                return vm;
            }

            var eventInfo = Helper.GetEventForBackingField(fieldInfo.MemberReference);
            if (eventInfo != null)
            {
                var typeViewModel = GetViewModelForType(eventInfo.DeclaringType);
                if (_viewModelsDictionary.ContainsKey(eventInfo))
                {
                    vm = _viewModelsDictionary[eventInfo];
                    vm.Background = typeViewModel.Background;
                    vm.Foreground = typeViewModel.Foreground;
                    return vm;
                }
                var evm = new EventViewModel(eventInfo)
                {
                    Background = typeViewModel.Background,
                    Foreground = typeViewModel.Foreground,
                    ToolTip = typeViewModel.Name
                };
                _viewModelsDictionary.Add(eventInfo, evm);
                return evm;
            }

            var tvm = GetViewModelForType(fieldInfo.DeclaringType);
            var fvm = new FieldViewModel(fieldInfo)
            {
                Background = tvm.Background,
                Foreground = tvm.Foreground,
                ToolTip = tvm.Name
            };
            _viewModelsDictionary.Add(fieldInfo, fvm);
            return fvm;
        }