Change MethodGenerator as composition with block rather than extension
Rename MethodGenerator to FuncitonDeclaration
Remove ClassGenerator field
Introduce MemberDeclaration to abtract decls.