added many generics and made components use the combined DefUse analysis instead of two distinct consecutive analyses