private void RenameUsages()
        {
            // todo: refactor

            // rename interface member
            if (_declarations.FindInterfaceMembers().Contains(_view.Target))
            {
                var implementations = _declarations.FindInterfaceImplementationMembers()
                                      .Where(m => m.IdentifierName == _view.Target.ComponentName + '_' + _view.Target.IdentifierName);

                foreach (var member in implementations)
                {
                    try
                    {
                        var newMemberName = _view.Target.ComponentName + '_' + _view.NewName;
                        var module        = member.Project.VBComponents.Item(member.ComponentName).CodeModule;

                        var content    = module.get_Lines(member.Selection.StartLine, 1);
                        var newContent = GetReplacementLine(content, member.IdentifierName, newMemberName);
                        module.ReplaceLine(member.Selection.StartLine, newContent);
                    }
                    catch (COMException)
                    {
                        // gulp
                    }
                }

                return;
            }

            var modules = _view.Target.References.GroupBy(r => r.QualifiedModuleName);

            foreach (var grouping in modules)
            {
                var module = grouping.Key.Component.CodeModule;
                foreach (var line in grouping.GroupBy(reference => reference.Selection.StartLine))
                {
                    var content    = module.get_Lines(line.Key, 1);
                    var newContent = GetReplacementLine(content, _view.Target.IdentifierName, _view.NewName);
                    module.ReplaceLine(line.Key, newContent);
                }

                // renaming interface
                if (grouping.Any(reference => reference.Context.Parent is VBAParser.ImplementsStmtContext))
                {
                    var members = _declarations.FindMembers(_view.Target);
                    foreach (var member in members)
                    {
                        var oldMemberName = _view.Target.IdentifierName + '_' + member.IdentifierName;
                        var newMemberName = _view.NewName + '_' + member.IdentifierName;
                        var method        = _declarations[oldMemberName].SingleOrDefault(m => m.QualifiedName.QualifiedModuleName == grouping.Key);
                        if (method == null)
                        {
                            continue;
                        }

                        var content    = module.get_Lines(method.Selection.StartLine, 1);
                        var newContent = GetReplacementLine(content, oldMemberName, newMemberName);
                        module.ReplaceLine(method.Selection.StartLine, newContent);
                    }
                }
            }
        }