Inheritance: CSharpSyntaxRewriter
            public override void SetTypeCode()
            {
                var name = Name;

                var commentlessCode = String.Join(Environment.NewLine, Declaration.GetText().Lines.Select(l => l.ToString()));

                var usings =
                    Root.DescendantNodes()
                    .OfType <UsingDirectiveSyntax> ()
                    .Select(u => u.GetText().ToString())
                    .ToList();

                var deps =
                    Root.DescendantNodes()
                    .OfType <IdentifierNameSyntax>()
                    .Select(n => Model.GetSymbolInfo(n))
                    .Where(s => s.Symbol != null && s.Symbol.Kind == SymbolKind.NamedType)
                    .Select(n => n.Symbol.Name)
                    .Distinct()
                    .ToList();

                var ns =
                    Declaration.Ancestors()
                    .OfType <NamespaceDeclarationSyntax>()
                    .Select(n => n.Name.GetText().ToString().Trim())
                    .FirstOrDefault() ?? "";

                // create an 'instrumented' instance of the document with watch calls
                var rewriter         = new WatchExpressionRewriter(Document.FullPath);
                var instrumented     = rewriter.Visit(Declaration);
                var instrumentedCode = instrumented.ToString();

                // the rewriter collects the WatchVariable definitions as it walks the tree
                var watches = rewriter.WatchVariables;

                TypeCode.Set(name, usings, commentlessCode, instrumentedCode, deps, ns, watches);
            }
			public override void SetTypeCode ()
			{
				var name = Name;

				var commentlessCode = String.Join (Environment.NewLine, Declaration.GetText ().Lines.Select (l => l.ToString ()));

				var usings =
					Root.DescendantNodes ()
						.OfType<UsingDirectiveSyntax> ()
						.Select (u => u.GetText ().ToString ())
						.ToList ();

				var deps =
					Root.DescendantNodes()
					    .OfType<IdentifierNameSyntax>()
						.Select(n => Model.GetSymbolInfo(n))
						.Where(s => s.Symbol != null && s.Symbol.Kind == SymbolKind.NamedType)
						.Select(n => n.Symbol.Name)
						.Distinct()
					    .ToList();

				var ns =
					Declaration.Ancestors()
					           .OfType<NamespaceDeclarationSyntax>()
							   .Select(n => n.Name.GetText().ToString().Trim())
							   .FirstOrDefault() ?? "";

				// create an 'instrumented' instance of the document with watch calls
				var rewriter = new WatchExpressionRewriter(Document.FullPath);
				var instrumented = rewriter.Visit(Declaration);
				var instrumentedCode = instrumented.ToString();

				// the rewriter collects the WatchVariable definitions as it walks the tree
				var watches = rewriter.WatchVariables;

				TypeCode.Set (name, usings, commentlessCode, instrumentedCode, deps, ns, watches);
			}