private static void createRemoteType(ClassDeclarationSyntax @class, Scope scope, out MethodDeclarationSyntax creation) { var originalName = @class.Identifier.ToString(); var typeName = "__remote" + originalName; creation = Templates .RemoteMethod .Get <MethodDeclarationSyntax>(typeName, originalName); scope.AddType(@class .WithIdentifier(CSharp.ParseToken(typeName)) .WithBaseList(CSharp.BaseList(CSharp.SeparatedList(new BaseTypeSyntax[] { CSharp.SimpleBaseType(CSharp.ParseTypeName(originalName)) }))) .WithAttributeLists(CSharp.List <AttributeListSyntax>()) .WithMembers(CSharp.List( createRemoteMethods(@class) .Union(createRemoteConstructors(@class, typeName)) .Union(new MemberDeclarationSyntax[] { Templates.RemoteId, Templates.RemoteDispatch, Templates.RemoteSerialize, Templates.RemoteDeserialize })))); }