private RootDiffNode CalculateDiffInternal(Object obj1, Object obj2, bool calculatingNewDiff)
        {
            SerializedObject diffedSO1 = new SerializedObject(obj1);
            SerializedObject diffedSO2 = new SerializedObject(obj2);

            List <DiffNode> diffNodes;

            CompareProperties(diffedSO1.EnumerateDirectChildren(), diffedSO2.EnumerateDirectChildren(), diffedSO1, diffedSO2, out diffNodes);

            RootDiffNode rootDiffNode = new RootDiffNode(diffedSO1, diffedSO2, diffNodes.ToArray());

            if (calculatingNewDiff)
            {
                rootDiffNode.SetExpandedState();
            }

            return(rootDiffNode);
        }