package sharpen.xobotos.generator; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.BodyDeclaration; import org.eclipse.jdt.core.dom.MethodDeclaration; import sharpen.core.csharp.ast.CSMember; import sharpen.core.csharp.ast.CSNode; import sharpen.core.framework.CSharpDriver.IMemberFilter; import sharpen.xobotos.api.templates.AbstractMethodTemplate; import sharpen.xobotos.api.templates.ITypeContainer; import sharpen.xobotos.api.templates.TypeTemplate; import java.util.List; public interface ITypeBuilder extends ITypeContainer, IMemberFilter { TypeTemplate getTypeTemplate(); AbstractMethodTemplate<?> findMethodTemplate(MethodDeclaration node); void addMember(CSMember member); <T extends BodyDeclaration> List<T> getBodyDeclarations(Class<T> klass); <X extends ASTNode> void registerMember(X body, MemberBuilder<X, ?, ?> builder); <X extends ASTNode, Y extends CSNode, Z extends MemberBuilder<X, Y, ?>> Z getMemberBuilder( X body, Class<Z> klass); }