public RecoverableSyntaxRoot(
     AbstractSyntaxTreeFactoryService service,
     TRoot root,
     IRecoverableSyntaxTree <TRoot> containingTree)
     : base(new ConstantValueSource <TRoot>(containingTree.CloneNodeAsRoot(root)))
 {
     _service        = service;
     _containingTree = containingTree;
 }
            private RecoverableSyntaxRoot(
                RecoverableSyntaxRoot <TRoot> originalRoot,
                IRecoverableSyntaxTree <TRoot> containingTree)
                : base(originalRoot)
            {
                Contract.ThrowIfNull(originalRoot._storage);

                _service        = originalRoot._service;
                _storage        = originalRoot._storage;
                _containingTree = containingTree;
            }