private void bCompare_Click(object sender, RoutedEventArgs e)
        {
            //load directory content
            WindowsFileSystem fileSystem = new WindowsFileSystem();
            IEnumerable <IDirectoryViewItem> leftItems  = fileSystem.GetDirectoryContent(LeftDir);
            List <IDirectoryViewItem>        rightItems = fileSystem.GetDirectoryContent(RightDir).ToList();//list need for remove functionality

            comparisonResult = new List <DirectoryComparison>();
            IDirectoryViewItem rightItem;

            foreach (IDirectoryViewItem item in leftItems)
            {
                if (item == null || item.IsMoveUp)
                {
                    continue;
                }

                rightItem = rightItems.SingleOrDefault(dvi => dvi != null && dvi.Name == item.Name);//right item that matches left name
                if (rightItem != null)
                {
                    if (item.IsDirectory)
                    {
                        comparisonResult.Add(new DirectoryComparison(item, rightItem, DirectoryComparisonResult.Equal));
                    }
                    else if (item.LastModifiedTime > rightItem.LastModifiedTime)
                    {
                        comparisonResult.Add(new DirectoryComparison(item, rightItem, DirectoryComparisonResult.LeftNewer));
                    }
                    else if (item.LastModifiedTime < rightItem.LastModifiedTime)
                    {
                        comparisonResult.Add(new DirectoryComparison(item, rightItem, DirectoryComparisonResult.RightNewer));
                    }
                    else
                    {
                        comparisonResult.Add(new DirectoryComparison(item, rightItem, DirectoryComparisonResult.Equal));
                    }

                    rightItems.Remove(rightItem);//no need in futher comparison
                }
                else
                {
                    comparisonResult.Add(new DirectoryComparison(item, null, DirectoryComparisonResult.LeftNewer));
                }
            }

            //every item from right collection don't exist in left
            foreach (IDirectoryViewItem item in rightItems)
            {
                if (item == null || item.IsMoveUp)
                {
                    continue;
                }

                comparisonResult.Add(new DirectoryComparison(null, item, DirectoryComparisonResult.RightNewer));
            }

            lvCompare.ItemsSource = comparisonResult;
        }