public bool HasRefactoring()
        {
            // Clear the memory before.
            refactorings.Clear();

            // Get the syntax tree in before and after source.
            var treeBefore = ASTUtil.GetSyntaxTreeFromSource(sourceBefore);
            var treeAfter = ASTUtil.GetSyntaxTreeFromSource(sourceAfter);

            // Get their roots.
            var rootBefore = treeBefore.GetRoot();
            var rootAfter = treeAfter.GetRoot();

            // Get the clasess in the before and after tree.
            var beforeClasses = ASTUtil.GetClassDeclarations(rootBefore);
            var afterClasses = ASTUtil.GetClassDeclarations(rootAfter);

            var inClassDetector = new InClassExtractMethodDetector(treeBefore, treeAfter);

            foreach (ClassDeclarationSyntax beforeClass in beforeClasses)
            {
                foreach (ClassDeclarationSyntax afterClass in afterClasses)
                {
                    // If the before class and after class have the identical name.
                    if (beforeClass.Identifier.ValueText.Equals(afterClass.Identifier.ValueText))
                    {
                        // Configure the in class detector.
                        inClassDetector.SetSyntaxNodeBefore(beforeClass);
                        inClassDetector.SetSyntaxNodeAfter(afterClass);

                        // If the detector finds some refactoring, add these refactorings to the list.
                        if (inClassDetector.HasRefactoring())
                        {
                            refactorings.AddRange(inClassDetector.GetRefactorings());
                        }
                    }
                }
            }
            return refactorings.Any();
        }