--- /dev/null
+package problem;
+
+public class Generic<T> {
+
+}
--- /dev/null
+package problem;
+
+public abstract class GenericService<T extends Generic<?>> {
+ protected abstract T update(T current);
+}
--- /dev/null
+package problem;
+
+public class Specific extends Generic<String> {
+
+}
--- /dev/null
+package problem;
+
+public class SpecificService extends GenericService<Specific> {
+ @Override
+ protected Specific update(Specific current) {
+ return null;
+ }
+
+ public static void main(String[] args) {
+ new SpecificService();
+ }
+}
--- /dev/null
+package problem.aspect;
+
+import org.aspectj.lang.annotation.Aspect;
+
+//@Aspect public class AnyAspect {
+@Aspect
+public class AnyAspect {
+}