import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class OPM_Sample extends OPMSuper implements Comparator<String> {

    public void testNormalMethodCouldBePrivate() {
        someNormalMethod();
    }

    @Override
    public int compare(String s1, String s2) {
        return s2.compareTo(s1);
    }

    public int testFPGenericDerivation() {
        return compare("Hello", "World");
    }

    public void someNormalMethod() {
        List<String> l = getFoo(new ArrayList<String>());
    }

    @Override
    public List<String> getFoo(List<String> l) {
        return l;
    }

    public void fpUncalledDontReport() {
        fpHasRTAnnotation();
    }

    @RT
    public void fpHasRTAnnotation() {
    }
    
    public void setFPFoo(int x) {
    }
    
    public int getFPFoo() {
        return 0;
    }
}

abstract class OPMSuper {
    public abstract List<String> getFoo(List<String> l);
}

@Retention(RetentionPolicy.RUNTIME)
@interface RT {

}

enum FPEnumValueOf {
    
    What, Where;
    
    public static void fpWithValueOf() {
        FPEnumValueOf f = FPEnumValueOf.valueOf(String.valueOf("What"));
    }
}


@@ -156,16 +156,93 @@
 il.List;
+%0Aimport java.util.concurrent.Executors;%0Aimport java.util.concurrent.TimeUnit;
 %0A%0Apublic
@@ -899,37 +899,33 @@
 ation() %7B%0A    %7D%0A
-    
 %0A
+
     public void 
@@ -948,21 +948,17 @@
 %7B%0A    %7D%0A
-    
 %0A
+
     publ
@@ -996,24 +996,173 @@
 urn 0;%0A    %7D
+%0A%0A    public void doIt() %7B%0A        Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(Writer::fpFlush, 1L, 1L, TimeUnit.SECONDS);%0A    %7D
 %0A%7D%0A%0Aabstract
@@ -1316,21 +1316,17 @@
 lueOf %7B%0A
-    
 %0A
+
     What
@@ -1338,13 +1338,9 @@
 re;%0A
-    
 %0A
+
     
@@ -1446,20 +1446,130 @@
 (%22What%22));%0A    %7D%0A%7D%0A%0A
+class Writer %7B%0A    public static void fpFlush() %7B%0A    %7D%0A%0A    public void close() %7B%0A        fpFlush();%0A    %7D%0A%7D%0A

add fp for OPM with invoke dynamic based on GitHub Issue #190