public static (LabeledNode full, LabeledNode part1, LabeledNode part2) GetRootNodesForTypeFragments(this LabeledNode labeledNode)
        {
            var oldIsFragmentRoot = labeledNode.IsFragmentRoot;

            labeledNode.IsFragmentRoot = false;
            var fragmentRoot = labeledNode.FindFragmentRoot();
            var full         = fragmentRoot.DuplicateFragment();

            labeledNode.IsFragmentRoot = true;
            var part1 = fragmentRoot.DuplicateFragment();
            var part2 = labeledNode.DuplicateFragment();

            labeledNode.IsFragmentRoot = oldIsFragmentRoot;

            return(full : full, part1 : part1, part2 : part2);
        }