public void GenerateCode(InterfaceDeclarationSyntax idecl, ICodeGenWriter writer)
        {
            var iname = idecl.Identifier.ToString();
            Console.WriteLine("GenerateCode: " + iname);

            writer.PushRegion(iname);
            writer.PushNamespace(idecl.GetNamespaceScope());

            GenerateTrackableContainerCode(idecl, writer);
            GenerateTrackableContainerTrackerCode(idecl, writer);

            writer.PopNamespace();
            writer.PopRegion();
        }
        public void GenerateCode(InterfaceDeclarationSyntax idecl, ICodeGenWriter writer)
        {
            var iname = idecl.Identifier.ToString();
            Console.WriteLine("GenerateCode: " + iname);

            writer.PushRegion(iname);
            writer.PushNamespace(idecl.GetNamespaceScope());

            var useProtoContract = idecl.AttributeLists.GetAttribute("ProtoContractAttribute") != null;
            GenerateTrackablePocoCode(idecl, writer, useProtoContract);

            if (useProtoContract)
                GenerateTrackablePocoSurrogateCode(idecl, writer);

            writer.PopNamespace();
            writer.PopRegion();
        }