Why not adopt a strategy where all org.eclipse.ui.*
        EP's are wrapped in an injectable part?
        
        
        In August I proposed that we modify the class
          template / byte code to include the annotations (probably
          because that's when I first learned you could do something
          like that).  If that is still a viable option I'm not sure it
          would be worth the amount of work.  
        
        
        What I was really trying to get at with that
          proposal is using the existing API to treat all workbench
          contributions (o.e.u.* EP's) as E4 parts.  Then there isn't an
          issue of mixing 3.x parts with 4.x parts because the workbench
          sees them all as 4.x parts.  At the same point, if a 3.x part
          requests a separate workbench part (view / perspective / etc.
          ), it is relatively straight forward to provide it with a 3.x
          part.  Even if the requested part is defined within a
          fragment, we can "mach-up" a bridge for the 4.x part to make
          it appear as a 3.x part.
        
        
        In my mind this provides a *true* compatibility
          layer.  The migration story becomes simple at that point: migrate
            what you want, when you want.  To migrate a view all you
          would have to do is break the inheritance from ViewPart (which
          wouldn't even be necessary) and add a couple of annotations.
           Maybe we create an optional @E4Part annotation.  This way
          when we look to wrap the contributed part in an injectable E4
          part, if any of @E4Part, @PostConstruct, @Focus, etc... are
          present the contribution isn't wrapped and treated as a raw E4
          part.  Then you wouldn't have to change *any* code
          except for adding a couple of annotations.  This would also
            allow you to have 3.x & 4.x parts contributed from the
            same bundle.
        
        
        I have been working on something that demo's this
          functionality, but I recently started with a new company and
          haven't had much time.  Hopefully in the next couple of weeks
          I will have something I can share.
        
        
        JD