public class K { void kkkk(){} } class KImpl extends K {} abstract class InspectionToolWrapper { T myTool; protected InspectionToolWrapper(T tool) { myTool = tool; } public T getTool() { return myTool; } } class CommonInspectionToolWrapper extends InspectionToolWrapper{ protected CommonInspectionToolWrapper(KImpl tool) { super(tool); } }