<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.arquitecturasoftware.org/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>GASP</title><link>http://www.arquitecturasoftware.org/blogs/default.aspx</link><description>Grupo de Arquitectura de Software Português</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>Sobrecarga De Redes Sociais</title><link>http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx</link><pubDate>Sun, 04 Jan 2009 23:35:00 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:20722</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><description>&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;Tem havido um crescimento de redes sociais e a adicção de características de redes sociais a outros sites.&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;Hoje em dia existe um vasto universo de redes sociais:&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;&lt;A title=Facebook href="http://www.facebook.com/" target=_blank&gt;Facebook&lt;/A&gt;&lt;/DIV&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;&lt;A title=Hi5 href="http://www.hi5.com/" target=_blank&gt;Hi5&lt;/A&gt;&lt;/DIV&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;&lt;A title=MySpace href="http://www.myspace.com/" target=_blank&gt;MySpace&lt;/A&gt;&lt;/DIV&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;&lt;A title="Where Are You Now?" href="http://www.wayn.com/" target=_blank&gt;WAYN&lt;/A&gt;&lt;/DIV&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;&lt;A title="Windows Live" href="http://home.live.com/" target=_blank&gt;Windows Live&lt;/A&gt;&lt;/DIV&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;etc.&lt;/DIV&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;Existem, também, algumas redes profissionais com as mesmas características das redes sociais mas dirigidas à vida profissional dos seus membros/utilizadores:&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;&lt;A title=LinkedIn href="http://www.linkedin.com/" target=_blank&gt;LinkedIn&lt;/A&gt;&lt;/DIV&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;&lt;A title=Viadeo href="http://www.viadeo.com/" target=_blank&gt;Viadeo&lt;/A&gt;&lt;/DIV&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;&lt;A title="Naymz - Next Level Networking" href="http://www.naymz.com/search/" target=_blank&gt;Naymz&lt;/A&gt;&lt;/DIV&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=justify&gt;etc.&lt;/DIV&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;Algumas pretendem captar os dois públicos, como o &lt;A title=Plaxo href="http://www.plaxo.com/" target=_blank&gt;Plaxo&lt;/A&gt;.&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;O meu problema é que tenho amigos e contactos profissionais em todas estas redes e começa a tornar-se impossível gerir tudo isto.&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;Mesmo com o &lt;A title="The web is better when it's social" href="http://cli.gs/opensocial" target=_blank&gt;OpenSocial&lt;/A&gt;, a maioria das redes está mais preocupada em capturar utilizadores do que prvidenciar informação sobre os seus utilizadores que possa ser consumida e agregada por outras redes.&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;E, quem quiser, ainda pode criar a sua própria rede no &lt;A title="Ning - Create Your Own Social Network" href="http://www.ning.com/" target=_blank&gt;Ning&lt;/A&gt;.&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;Eu gostaria que estas redees disponibilizassem informação normalizada que pudesse ser consumida pelas meus amigos e contactos profissionais na rede da sua preferÊncia (desde que aceite por mim, claro).&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;P align=justify&gt;Mas, tal como acontece com o &lt;A title=OpenID href="http://cli.gs/openid" target=_blank&gt;OpenID&lt;/A&gt;, todos querem ser um provedor. Aceitar qualquer OpenID como identificadores de utilizador já não é tão apetecível.&lt;/P&gt;&lt;A href="http://paulomorgado.net/"&gt;&lt;/A&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx&amp;amp;;subject=Sobrecarga+De+Redes+Sociais" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx&amp;amp;;title=Sobrecarga+De+Redes+Sociais" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx&amp;amp;title=Sobrecarga+De+Redes+Sociais" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx&amp;amp;;title=Sobrecarga+De+Redes+Sociais" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx&amp;amp;;title=Sobrecarga+De+Redes+Sociais&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2009/01/04/sobrecarga-de-redes-sociais.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturasoftware.org/aggbug.aspx?PostID=20722" width="1" height="1"&gt;</description></item><item><title>Gendarme - Code analysis tool</title><link>http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx</link><pubDate>Mon, 29 Dec 2008 13:20:14 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:20699</guid><dc:creator>tspascoal</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In the last few days I've found a tool called &lt;a href="http://www.mono-project.com/Gendarme"&gt;Gendarme&lt;/a&gt; it is an open source tool from the &lt;a href="http://www.mono-project.com"&gt;Mono Project&lt;/a&gt; that allows you to find problems in .Net (either Mono or Microsoft.Net) applications and libraries. &lt;/p&gt;  &lt;p&gt;It has a rule based system to do the analysis and it can be seen as an FXCop/Team System Code Analysis kind of system. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I haven't counted the number of rules it provides but doing a visual analysis it doesn't seem to have as many rules as Team System Code Analysis. However quantity isn't everything and from my analysis it has a pretty number of good &lt;a href="http://www.mono-project.com/Gendarme#Rules"&gt;rules&lt;/a&gt; (including some categories that the Code Analysis doesn't has like Linq)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The rules are grouped in the following categories&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.BadPractice"&gt;BadPractice&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Concurrency"&gt;Concurrency&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Correctness"&gt;Correctness&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Design"&gt;Design&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Design.Generic"&gt;Design.Generic&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Design.Linq"&gt;Linq&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Exceptions"&gt;Exceptions&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Interoperability"&gt;Interoperability&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Maintainability"&gt;Maintainability&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Naming"&gt;Naming&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Performance"&gt;Performance&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Portability"&gt;Portability&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Security"&gt;Security&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Security.Cas"&gt;Security Cas&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Serialization"&gt;Serialization&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Smells"&gt;Smells&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mono-project.com/Gendarme.Rules.Ui"&gt;Ui&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can see the full list (and description) of the &lt;a href="http://www.mono-project.com/Gendarme#Rules"&gt;rules here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There is no Visual Studio integration so you either have to run it from the command line or from a supplied windows form wizard. No MSBuild integration exists either but it would be fairly easy to implement a custom action or just call the &lt;a href="http://msdn.microsoft.com/en-us/library/x8zx72cd.aspx"&gt;execute task&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Integration with TFS could be either easy or hard depending on how fully integrated you would want it. Since the execution of Gendarme produces a report (XML,HTML,etc) you can execute on your build process and make the HTML report available on the build results (the easy part) or if you want full integration like having the data directly on the TFS build warehouse that could a lot more work.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I've spent a couple of hours running it on a median sized project and it enabled me to fix some naming mistakes, make the code more clear in some areas and even fix an error where disposed wasn't being called.&lt;/p&gt;  &lt;p&gt;During my analysis I also found a bunch of false positives. The tool has a feature that categorizes the issues that it has found with a degree of confidence, which states the degree of confidence that the rule has in the face of the found issue (most false positives had a medium to high degree of confidence which is a bummer). &lt;/p&gt;  &lt;p&gt;The rules documentation is complete and allows you to understand the consequence of not implementing the rule and why you should fix the found issue (although some rules are not documented). &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Definitively a tool to use in the future.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[cross posted on &lt;a title="http://agilior.pt/blogs/tiago.pascoal/archive/2008/12/29/6537.aspx" href="http://agilior.pt/blogs/tiago.pascoal/archive/2008/12/29/6537.aspx"&gt;http://agilior.pt/blogs/tiago.pascoal/archive/2008/12/29/6537.aspx&lt;/a&gt;]&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx&amp;amp;;subject=Gendarme+-+Code+analysis+tool" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx&amp;amp;;title=Gendarme+-+Code+analysis+tool" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx&amp;amp;title=Gendarme+-+Code+analysis+tool" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx&amp;amp;;title=Gendarme+-+Code+analysis+tool" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx&amp;amp;;title=Gendarme+-+Code+analysis+tool&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/gendarme-code-analysis-tool.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturasoftware.org/aggbug.aspx?PostID=20699" width="1" height="1"&gt;</description></item><item><title>Your Code Sucks and I Hate You</title><link>http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx</link><pubDate>Mon, 29 Dec 2008 00:03:22 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:20694</guid><dc:creator>tspascoal</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Did the title catch your attention? Well it did mine.&lt;/p&gt;  &lt;p&gt;It is the title of a &lt;a href="http://mumak.net/stuff/your-code-sucks.html"&gt;post that I've just read&lt;/a&gt;. Although the title seems a little bit &lt;a href="http://en.wikipedia.org/wiki/Troll_(Internet)"&gt;trolish&lt;/a&gt; it's because it probably is, if you read the subtitle you will see the main title is not only trollish but very misleading. The post subtitle is &lt;em&gt;The Social Dynamics of Code Reviews. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It mainly talks about code reviews in open source projects&lt;em&gt;&amp;#160;&lt;/em&gt;but most of the knowledge sprung in this post is applicable to close source projects.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Code reviews is something that is hard to do effectively. Even you get past the sociological issues mentioned on the post, without a decent tool it is very hard to keep track what has been reviewed and it's not.&lt;/p&gt;  &lt;p&gt;Code review is one of the area I wish there were some kind of offering for TFS. Granted you can do code reviews with shelve sets and some sort of informal communication via email (assigning code review tasks or even a work item type) but that would give us no metrics or a simple way to keep track which parts of the code have been reviewed.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The more complete solution for TFS seems to be &lt;a href="http://www.codeplex.com/TeamReview"&gt;TeamReview&lt;/a&gt; (freely available on codeplex) which combines specific work item types and a Visual Studio add-in to help you manage the process. While I never tested the tool, I've given some attention to the description and workflow and it seems to work at a very micro level of the code. And the metric tools (what has been reviewed, what is not, etc,etc) seems to be non existant.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There are some more mature solutions that perhaps can be adapted to be used with TFS:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://review-board.org/"&gt;Review board&lt;/a&gt; which has originated from VMware &lt;/li&gt;    &lt;li&gt;The venerable &lt;a href="http://codestriker.sourceforge.net"&gt;Codestriker&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sourceforge.net/projects/jcodereview/"&gt;JCR&lt;/a&gt; - which unlike other tools doesn't work at the source control level but with whole files &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;On the commercial side &lt;a href="http://smartbear.com/codecollab.php"&gt;Code Collaborator&lt;/a&gt; from Smart Bear has a good reputation and it works with TFS but never tried it either.&lt;/p&gt;  &lt;p&gt;[Cross Posted on &lt;a title="http://agilior.pt/blogs/tiago.pascoal/archive/2008/12/28/6528.aspx" href="http://agilior.pt/blogs/tiago.pascoal/archive/2008/12/28/6528.aspx"&gt;http://agilior.pt/blogs/tiago.pascoal/archive/2008/12/28/6528.aspx&lt;/a&gt;]&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx&amp;amp;;subject=Your+Code+Sucks+and+I+Hate+You" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx&amp;amp;;title=Your+Code+Sucks+and+I+Hate+You" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx&amp;amp;title=Your+Code+Sucks+and+I+Hate+You" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx&amp;amp;;title=Your+Code+Sucks+and+I+Hate+You" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx&amp;amp;;title=Your+Code+Sucks+and+I+Hate+You&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/29/your-code-sucks-and-i-hate-you.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturasoftware.org/aggbug.aspx?PostID=20694" width="1" height="1"&gt;</description></item><item><title>Team System Virtual Machines updates</title><link>http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx</link><pubDate>Fri, 26 Dec 2008 11:11:49 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:20590</guid><dc:creator>tspascoal</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;TheVSTS 2008 virtual machines that are currently available are set to expire on 31 December, so Microsoft by the magical hand of &lt;a href="http://www.pluralsight.com/community/blogs/brian/"&gt;Brian Randell&lt;/a&gt; dressed as &lt;a href="http://en.wikipedia.org/wiki/Santa"&gt;santa&lt;/a&gt; (people who know Brian can easily get the resemblance :-)) and updated the virtual machines to expiry on 31 December 2009.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Not only he updated the machine with the latest goodies (power tools, the database edition GDR) but&amp;#160; he also added to the list 2 new virtual images that can be run on Hyper-V, this brings up a total of 4 virtual machines (one with only TFS and another with TFS and Team Suite).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This is what has been included&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;the latest virtual machine additions or integration services components &lt;/li&gt;    &lt;li&gt;all of the latest Windows Updates as of December 1, 2008 &lt;/li&gt;    &lt;li&gt;Team Foundation Server 2008 SP1 &lt;/li&gt;    &lt;li&gt;Visual Studio 2008 Team Suite SP1 &lt;/li&gt;    &lt;li&gt;Team System Web Access 2008 SP1 &lt;/li&gt;    &lt;li&gt;Team Foundation Power Tools, October 2008 update &lt;/li&gt;    &lt;li&gt;the latest MSSCCI provider &lt;/li&gt;    &lt;li&gt;Team Explorer 2005 (this allows you to work with TFS from Visual Studio 2005 which is installed so that you can edit and customize TFS reports) &lt;/li&gt;    &lt;li&gt;the GDR for the product formally known as Visual Studio 2008 Database Edition (aka Data Dude) &lt;/li&gt;    &lt;li&gt;current Process Explorer, Process Monitor, and Background Info &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can get the goods here &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c7a809d8-8c9f-439f-8147-948bc6957812&amp;amp;displaylang=en"&gt;VSTS &amp;#8220;all-up&amp;#8221; Virtual PC/Virtual Server image&lt;/a&gt; (6 GB download, expands to 15 GB) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=72262ead-e49d-43d4-aa45-1da2a27d9a65"&gt;TFS &amp;#8220;only&amp;#8221; Virtual PC/Virtual Server image&lt;/a&gt; (3 GB download, expands to 8 GB) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9eb65c97-29c9-4d05-ae45-73d22ad4b86e"&gt;VSTS &amp;#8220;all-up&amp;#8221; Hyper-V image&lt;/a&gt; (6 GB download, expands to 15 GB) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=39644cdd-db4d-445e-b087-dd3e3cdf03fb"&gt;TFS &amp;#8220;only&amp;#8221; Hyper-V image&lt;/a&gt; (3 GB download, expands to 8 GB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Or read all the details &lt;a href="http://www.pluralsight.com/community/blogs/brian/archive/2008/12/24/happy-holidays-and-look-what-santa-s-brought.aspx"&gt;on Brian's post&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;[Cross Posted on &lt;a href="http://agilior.pt/blogs/tiago.pascoal/archive/2008/12/26/6506.aspx"&gt;http://agilior.pt/blogs/tiago.pascoal/archive/2008/12/26/6506.aspx&lt;/a&gt;]&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx&amp;amp;;subject=Team+System+Virtual+Machines+updates" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx&amp;amp;;title=Team+System+Virtual+Machines+updates" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx&amp;amp;title=Team+System+Virtual+Machines+updates" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx&amp;amp;;title=Team+System+Virtual+Machines+updates" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx&amp;amp;;title=Team+System+Virtual+Machines+updates&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/26/team-system-virtual-machines-updates.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturasoftware.org/aggbug.aspx?PostID=20590" width="1" height="1"&gt;</description></item><item><title>Mais Um Grande Exemplo De Silverlight Deep Zoom – Da ViaTecla Innovation Laboratories</title><link>http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx</link><pubDate>Wed, 24 Dec 2008 14:29:51 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:20491</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a title="ViaTecla Natal Zoom" href="http://natalzoom.labs.viatecla.com/" target="_blank"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="ViaTecla Natal Zoom" border="0" alt="VTPostal2008" src="http://paulomorgado.net/blogs/images/AnotherGreatExampleOfSilverlightDeepZoom_BA64/VTPostal2008.jpg" width="644" height="406" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Este iniovador uso do &lt;a title="Deep Zoom" href="http://msdn.microsoft.com/library/cc645050(VS.95).aspx" target="_blank"&gt;Deep Zoom&lt;/a&gt; usa imagens de sítios que usam as &lt;a title="Produtos ViaTecla&amp;#39;s" href="http://www.viatecla.com/default.aspx?channelId=CB11BF9E-E8CD-4369-BE25-3183B7EA3C99" target="_blank"&gt;solucões de software&lt;/a&gt; &lt;a title="ViaTecla" href="http://www.viatecla.com/" target="_blank"&gt;ViaTecla&lt;/a&gt;’s para formar uma imagem do Pai Natal.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx&amp;amp;;subject=Mais+Um+Grande+Exemplo+De+Silverlight+Deep+Zoom+%e2%80%93+Da+ViaTecla+Innovation+Laboratories" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx&amp;amp;;title=Mais+Um+Grande+Exemplo+De+Silverlight+Deep+Zoom+%e2%80%93+Da+ViaTecla+Innovation+Laboratories" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx&amp;amp;title=Mais+Um+Grande+Exemplo+De+Silverlight+Deep+Zoom+%e2%80%93+Da+ViaTecla+Innovation+Laboratories" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx&amp;amp;;title=Mais+Um+Grande+Exemplo+De+Silverlight+Deep+Zoom+%e2%80%93+Da+ViaTecla+Innovation+Laboratories" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx&amp;amp;;title=Mais+Um+Grande+Exemplo+De+Silverlight+Deep+Zoom+%e2%80%93+Da+ViaTecla+Innovation+Laboratories&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/24/mais-um-grande-exemplo-de-silverlight-deep-zoom-da-viatecla-innovation-laboratories.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturasoftware.org/aggbug.aspx?PostID=20491" width="1" height="1"&gt;</description><category domain="http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/tags/.NET+/default.aspx">.NET </category><category domain="http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/tags/DeepZoom/default.aspx">DeepZoom</category></item><item><title>TFS Branching guidance 2.0 has been released</title><link>http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx</link><pubDate>Tue, 23 Dec 2008 21:32:12 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:20472</guid><dc:creator>tspascoal</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;When I give a Team System Workshop one of the topics that tends to generate some discusssions is the module about source control and branching (mainly the branching patterns and usage). &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Branching is not an easy subject, it normally requires a mindset shift for people who are not used to it. Specially when there are so many ways of doing it. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In TFS 2010 branching is going to be a lot easier&amp;#160; and powerful since the team has been spending a lot of time on &lt;a href="http://channel9.msdn.com/posts/VisualStudio/Branching-and-Merging-Visualization-with-Team-Foundation-Server-2010/"&gt;branching and visualization support&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When it comes to branching patterns my bible is still &lt;a href="http://www.amazon.com/Software-Configuration-Management-Patterns-Integration/dp/0201741172"&gt;Software Configuration Management Patterns: Effective Teamwork, Practical Integration&lt;/a&gt; but a few days ago the VSTS Rangers with the collaboration of the VSTS MVP's has launched the second release of the &lt;a href="http://www.codeplex.com/TFSBranchingGuideII"&gt;TFS Branching Guide&lt;/a&gt;&amp;#160; on codeplex.&amp;#160; This will help TFS users deal with branching scenarios and usages in TFS.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;What will you get if you download the package? &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;TFS Branching Guide - Main 2.0      &lt;ul&gt;       &lt;li&gt;This is the main article which briefly explains branching concepts and introduces 3 levels of the most common branching scenario &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;TFS Branching Guide - Scenarios 2.0      &lt;ul&gt;       &lt;li&gt;A collection of less common branching scenarios &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;TFS Branching Guide - Q&amp;amp;A 2.0      &lt;ul&gt;       &lt;li&gt;A set of most frequently asked questions with answers &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;TFS Branching Guide - Drawings 2.0      &lt;ul&gt;       &lt;li&gt;A set of branching drawings in different formats including a large branching poster &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;TFS Branching Guide - Labs 2.0      &lt;ul&gt;       &lt;li&gt;A couple of examples for hands on labs with step by step instruction for practicing the branching scenarios &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;[Cross posted on &lt;a title="http://agilior.pt/blogs/tiago.pascoal/archive/2008/12/23/6467.aspx" href="http://agilior.pt/blogs/tiago.pascoal/archive/2008/12/23/6467.aspx"&gt;http://agilior.pt/blogs/tiago.pascoal/archive/2008/12/23/6467.aspx&lt;/a&gt;]&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx&amp;amp;;subject=TFS+Branching+guidance+2.0+has+been+released" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx&amp;amp;;title=TFS+Branching+guidance+2.0+has+been+released" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx&amp;amp;title=TFS+Branching+guidance+2.0+has+been+released" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx&amp;amp;;title=TFS+Branching+guidance+2.0+has+been+released" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx&amp;amp;;title=TFS+Branching+guidance+2.0+has+been+released&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/tiagopascoal/archive/2008/12/23/tfs-branching-guidance-2-0-has-been-released.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturasoftware.org/aggbug.aspx?PostID=20472" width="1" height="1"&gt;</description></item><item><title>Salvo Pela .NET Framework Cleanup Tool – Outra Vez!</title><link>http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx</link><pubDate>Mon, 22 Dec 2008 00:26:26 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:20446</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;Não sei o que se passa com o meu sistema &lt;a title="Windows XP" href="http://www.microsoft.com/windows/windows-xp/" target="_blank"&gt;XP&lt;/a&gt; (Alem do facto de ainda o estar a usar) mas não consegui instalar a paltaforma &lt;a title=".NET Framework Developer Center" href="http://msdn.microsoft.com/netframework/" target="_blank"&gt;.NET&lt;/a&gt; 3.5 sem remover a 2.0 e agora não consegui aplicar o&amp;#160; SP1 sem remover a 3.5.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;Felizmente, fui salvo pela &lt;a title=".NET Framework cleanup Tool" href="http://astebner.sts.winisp.net/Tools/dotnetfx_cleanup_tool.zip"&gt;.NET Framework cleanup Tool&lt;/a&gt; do &lt;a title="Aaron Stebner&amp;#39;s WebLog - Thoughts about setup and deployment issues, XNA, Windows Media Center, the .NET Framework and Visual Studio" href="http://blogs.msdn.com/astebner/" target="_blank"&gt;Aaron Stebner&lt;/a&gt; – ambas as vezes.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;Kudos Aaron!&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx&amp;amp;;subject=Salvo+Pela+.NET+Framework+Cleanup+Tool+%e2%80%93+Outra+Vez!" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx&amp;amp;;title=Salvo+Pela+.NET+Framework+Cleanup+Tool+%e2%80%93+Outra+Vez!" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx&amp;amp;title=Salvo+Pela+.NET+Framework+Cleanup+Tool+%e2%80%93+Outra+Vez!" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx&amp;amp;;title=Salvo+Pela+.NET+Framework+Cleanup+Tool+%e2%80%93+Outra+Vez!" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx&amp;amp;;title=Salvo+Pela+.NET+Framework+Cleanup+Tool+%e2%80%93+Outra+Vez!&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/22/salvo-pela-net-framework-cleanup-tool-outra-vez.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturasoftware.org/aggbug.aspx?PostID=20446" width="1" height="1"&gt;</description><category domain="http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/tags/.NET+/default.aspx">.NET </category><category domain="http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/tags/Ferramentas/default.aspx">Ferramentas</category></item><item><title>Feliz Natal E Um Próspero Ano Novo!</title><link>http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx</link><pubDate>Sun, 21 Dec 2008 20:21:52 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:20445</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a title="Feliz Natal E Um Próspero Ano Novo!" href="http://www.microsoftnatal.com/microsoft/EcardNatal/" target="_blank"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" border="0" src="http://www.microsoftnatal.com/microsoft/EcardNatal/images/Email/img1.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx&amp;amp;;subject=Feliz+Natal+E+Um+Pr%26%23243%3bspero+Ano+Novo!" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx&amp;amp;;title=Feliz+Natal+E+Um+Pr%26%23243%3bspero+Ano+Novo!" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx&amp;amp;title=Feliz+Natal+E+Um+Pr%26%23243%3bspero+Ano+Novo!" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx&amp;amp;;title=Feliz+Natal+E+Um+Pr%26%23243%3bspero+Ano+Novo!" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx&amp;amp;;title=Feliz+Natal+E+Um+Pr%26%23243%3bspero+Ano+Novo!&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/2008/12/21/feliz-natal-e-um-pr-spero-ano-novo.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturasoftware.org/aggbug.aspx?PostID=20445" width="1" height="1"&gt;</description><category domain="http://www.arquitecturasoftware.org/blogs/paulomorgado/archive/tags/Pessoal/default.aspx">Pessoal</category></item><item><title>DSL Tools #14 - Double-click in the Model Explorer</title><link>http://www.arquitecturasoftware.org/blogs/hugoribeiro/archive/2008/12/16/dsl-tools-14-double-click-in-the-model-explorer.aspx</link><pubDate>Tue, 16 Dec 2008 16:22:16 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:20261</guid><dc:creator>hgr</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Every DSL Tools project generates this handy model explorer where you can browse the domain classes that are on your domain model.&lt;/p&gt;  &lt;p&gt;Something like this:&lt;/p&gt;  &lt;p&gt;&lt;img height="314" alt="Model Explorer Preview" src="http://dl.getdropbox.com/u/140742/Blog/DSLTools15.png" width="226" /&gt; &lt;/p&gt;  &lt;p&gt;This is particularly helpful for example to change the properties of a particular domain class. You browse for in the explorer, click on it, and simply edit the properties.&lt;/p&gt;  &lt;p&gt;Now there is a fundamental feature that the guys at Microsoft missed in the explorer. The ability to double click a domain class there and have the domain model view show that domain class centered. A feature very useful if you have a model with a few dozens of domains classes (which is very typical).&lt;/p&gt;  &lt;p&gt;So I put my mind to implement such behavior on my various DSL explorers. It turns out that it isn't very difficult.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. Determine the explorer class name&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The model explorer class is generated as part of your DSLPackage project. The name of the class depends on the name of your DSL. To find out the correct name, browse the DSLPackage project, under GeneratedCode, and you'll find a file named ModelExplorer.cs. The name of the explorer is the name of the first class on that file.&lt;/p&gt;  &lt;p&gt;In my example that is UserInterfaceModelExplorer:&lt;/p&gt;  &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;"&gt;   &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;     &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; &lt;span style="color:#008000;"&gt;/// Double-derived class to allow easier code customization.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt; &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; UserInterfaceModelExplorer : UserInterfaceModelExplorerBase&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// Constructs a new UserInterfaceModelExplorer.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; UserInterfaceModelExplorer(global::System.IServiceProvider serviceProvider)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;         : &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;(serviceProvider)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;2. Create a custom class with that same name&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Under the DSLPackage, you will need to create a new custom partial class with the name of your model explorer. All the magic will happen here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Override the CreateElementVisitor method&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here you should subscribe to the ObjectModelBrowser.DoubleClick event:&lt;/p&gt;

&lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;"&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; &lt;span style="color:#008000;"&gt;/// Executed when the model explorer creates the tree element visitor.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt; &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt; &lt;span style="color:#008000;"&gt;/// &amp;lt;returns&amp;gt;The tree element visitor.&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; IElementVisitor CreateElementVisitor()&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Subscribe double click in the tree view&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.ObjectModelBrowser.DoubleClick += &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; EventHandler(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.ObjectModelBrowser_DoubleClick);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Default behavior&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;.CreateElementVisitor();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  14:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;4. Implement the corresponding event handler&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The magic consists in:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;First, finding the element that is selected in the explorer, &lt;/li&gt;

  &lt;li&gt;Second, getting the corresponding model element, &lt;/li&gt;

  &lt;li&gt;And, finally, selecting that shape in the model viewer. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check the full source code bellow for the implementation of these steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Transform All templates&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before you test the new behavior of the model explorer, you'll need to transform all the templates to let the DSL know that you have customized your model explorer.&lt;/p&gt;

&lt;p&gt;And that's it. Double-click any domain class in the explorer and the model viewer will be updated accordingly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full Source Code&lt;/strong&gt;&lt;/p&gt;

&lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;"&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Collections.ObjectModel;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Microsoft.VisualStudio.Modeling;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Microsoft.VisualStudio.Modeling.Diagrams;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Microsoft.VisualStudio.Modeling.Shell;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; MyDSL.UserInterface&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// Custom behavior for UserInterfaceModelExplorer.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; UserInterfaceModelExplorer&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  14:&lt;/span&gt;         &lt;span style="color:#cc6633;"&gt;#region&lt;/span&gt; Public Methods&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  15:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// Executed when the model explorer creates the tree element visitor.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  19:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;returns&amp;gt;The tree element visitor.&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  20:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; IElementVisitor CreateElementVisitor()&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  21:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  22:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;// Subscribe double click in the tree view&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  23:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  24:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.ObjectModelBrowser.DoubleClick += &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; EventHandler(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.ObjectModelBrowser_DoubleClick);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  25:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  26:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;// Default behavior&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  27:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  28:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;.CreateElementVisitor();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  29:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  30:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  31:&lt;/span&gt;         &lt;span style="color:#cc6633;"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  32:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  33:&lt;/span&gt;         &lt;span style="color:#cc6633;"&gt;#region&lt;/span&gt; Private Methods&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  34:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  35:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  36:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// Selects the specified shape using the given modeling document data.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  37:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  38:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;shapeElement&amp;quot;&amp;gt;The shape element that should be selected.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  39:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;docData&amp;quot;&amp;gt;The modeling document data.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  40:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; SelectShape(ShapeElement shapeElement, DocData docData)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  41:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  42:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;// Validation&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  43:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  44:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (shapeElement == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  45:&lt;/span&gt;             {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  46:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span style="color:#006080;"&gt;&amp;quot;shapeElement&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  47:&lt;/span&gt;             }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  48:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  49:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (docData == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  50:&lt;/span&gt;             {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  51:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span style="color:#006080;"&gt;&amp;quot;docData&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  52:&lt;/span&gt;             }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  53:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  54:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;// Select the shape&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  55:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  56:&lt;/span&gt;             ModelingDocView docView = docData.DocViews[0];&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  57:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (docView != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  58:&lt;/span&gt;             {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  59:&lt;/span&gt;                 docView.SelectObjects(1, &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;[] { shapeElement }, 0);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  60:&lt;/span&gt;             }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  61:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  62:&lt;/span&gt;         &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  63:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  64:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// Gets the first shape the represents the specified model element.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  65:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  66:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;modelElement&amp;quot;&amp;gt;The model element whose shape will be returned.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  67:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;returns&amp;gt;The first shape the represents the specified model element.&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  68:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; ShapeElement GetModelElementFirstShape(ModelElement modelElement)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  69:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  70:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;// Presentation elements&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  71:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  72:&lt;/span&gt;             LinkedElementCollection&amp;lt;PresentationElement&amp;gt; presentations = PresentationViewsSubject.GetPresentation(modelElement);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  73:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (ModelElement element &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; presentations)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  74:&lt;/span&gt;             {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  75:&lt;/span&gt;                 ShapeElement shapeElement = (element &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; ShapeElement);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  76:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (shapeElement != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  77:&lt;/span&gt;                 {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  78:&lt;/span&gt;                     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; shapeElement;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  79:&lt;/span&gt;                 }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  80:&lt;/span&gt;             }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  81:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  82:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;// Default result&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  83:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  84:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  85:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  86:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  87:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  88:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// Return the model element which is the parent of the specified model element considering that&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  89:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// this element is placed in a compartment.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  90:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  91:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;modelElement&amp;quot;&amp;gt;The model element whose parent will be returned.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  92:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  93:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// The model element which is the parent of the specified model element considering that&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  94:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// this element is placed in a compartment.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  95:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;/// &amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  96:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; ModelElement GetCompartmentElementFirstParent(ModelElement modelElement)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  97:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  98:&lt;/span&gt;             &lt;span style="color:#008000;"&gt;// Get the domain class associated with model element.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  99:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 100:&lt;/span&gt;             DomainClassInfo domainClass = modelElement.GetDomainClass();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 101:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (domainClass != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 102:&lt;/span&gt;             {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 103:&lt;/span&gt;                 &lt;span style="color:#008000;"&gt;// A element is only considered to be in a compartment if it participates in only 1 embedding relationship&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 104:&lt;/span&gt;                 &lt;span style="color:#008000;"&gt;// This might be wrong for some models&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 105:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 106:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (domainClass.AllEmbeddedByDomainRoles.Count == 1)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 107:&lt;/span&gt;                 {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 108:&lt;/span&gt;                     &lt;span style="color:#008000;"&gt;// Get a collection of all the links to this model element&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 109:&lt;/span&gt;                     &lt;span style="color:#008000;"&gt;// Since this is in a compartment there will only be one&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 110:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 111:&lt;/span&gt;                     ReadOnlyCollection&amp;lt;ElementLink&amp;gt; links = DomainRoleInfo.GetAllElementLinks(modelElement);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 112:&lt;/span&gt;                     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (links.Count == 1)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 113:&lt;/span&gt;                     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 114:&lt;/span&gt;                         &lt;span style="color:#008000;"&gt;// Get the model element participating in the link that isn't the current one&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 115:&lt;/span&gt;                         &lt;span style="color:#008000;"&gt;// That will be the parent&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 116:&lt;/span&gt;                         &lt;span style="color:#008000;"&gt;// Probably there is a better way to achieve the same result&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 117:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 118:&lt;/span&gt;                         &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (ModelElement linkedElement &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; links[0].LinkedElements)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 119:&lt;/span&gt;                         {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 120:&lt;/span&gt;                             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!modelElement.Equals(linkedElement))&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 121:&lt;/span&gt;                             {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 122:&lt;/span&gt;                                 &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; linkedElement;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 123:&lt;/span&gt;                             }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 124:&lt;/span&gt;                         }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 125:&lt;/span&gt;                     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 126:&lt;/span&gt;                 }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 127:&lt;/span&gt;             }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 