// Path: core/src/test/java/com/dnt/itl/test/perf/PerfTestBean.java
// public class PerfTestBean {
// 
//     String strvar = String.valueOf(System.currentTimeMillis());
// 
//     public String perfTest() {
//         return strvar;
//     }
// 
//     private int intvar = (int) System.currentTimeMillis();
// 
//     public int perfTestUseRet() {
//         return intvar;
//     }
// 
//     public Integer perfTestUseRetBox() {
//         return intvar;
//     }
// 
//     long longret = System.currentTimeMillis();
// 
//     Long longretBoxed = System.currentTimeMillis();
// 
//     public Long perfTestUseRetBoxLong() {
//         return longret;
//     }
// 
// 
//     public long perfTestUseRetLong() {
//         return longret;
//     }
// 
//     public Long perfTestUseRetBoxLong2() {
//         return longretBoxed;
//     }
// 
//     public Long perfTestUseRetLongContainsLogic() {
//         long start = System.nanoTime();
//         intvar++;
//         long takes = System.nanoTime() - start;
//         return takes;
//     }
// 
//     public String getStrvar() {
//         return strvar;
//     }
// 
//     public void setStrvar(String strvar) {
//         this.strvar = strvar;
//     }
// 
//     public int getIntvar() {
//         return intvar;
//     }
// 
//     public void setIntvar(int intvar) {
//         this.intvar = intvar;
//     }
// 
//     public long getLongret() {
//         return longret;
//     }
// 
//     public void setLongret(long longret) {
//         this.longret = longret;
//     }
// }


import com.dnt.itl.test.perf.PerfTestBean;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
package com.dnt.itl.test.invokedynamic;



/**
 * User: Mark Zang
 * Date: 2015/5/4
 * Time: 9:06
 */
public class Bytecode {

    static MethodHandles.Lookup lookup = MethodHandles.lookup();

    public static void main(String[] args) throws Throwable {
// Path: core/src/test/java/com/dnt/itl/test/perf/PerfTestBean.java
// public class PerfTestBean {
// 
//     String strvar = String.valueOf(System.currentTimeMillis());
// 
//     public String perfTest() {
//         return strvar;
//     }
// 
//     private int intvar = (int) System.currentTimeMillis();
// 
//     public int perfTestUseRet() {
//         return intvar;
//     }
// 
//     public Integer perfTestUseRetBox() {
//         return intvar;
//     }
// 
//     long longret = System.currentTimeMillis();
// 
//     Long longretBoxed = System.currentTimeMillis();
// 
//     public Long perfTestUseRetBoxLong() {
//         return longret;
//     }
// 
// 
//     public long perfTestUseRetLong() {
//         return longret;
//     }
// 
//     public Long perfTestUseRetBoxLong2() {
//         return longretBoxed;
//     }
// 
//     public Long perfTestUseRetLongContainsLogic() {
//         long start = System.nanoTime();
//         intvar++;
//         long takes = System.nanoTime() - start;
//         return takes;
//     }
// 
//     public String getStrvar() {
//         return strvar;
//     }
// 
//     public void setStrvar(String strvar) {
//         this.strvar = strvar;
//     }
// 
//     public int getIntvar() {
//         return intvar;
//     }
// 
//     public void setIntvar(int intvar) {
//         this.intvar = intvar;
//     }
// 
//     public long getLongret() {
//         return longret;
//     }
// 
//     public void setLongret(long longret) {
//         this.longret = longret;
//     }
// }


// Path: core/src/test/java/com/dnt/itl/test/invokedynamic/Bytecode.java
import com.dnt.itl.test.perf.PerfTestBean;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;

package com.dnt.itl.test.invokedynamic;



/**
 * User: Mark Zang
 * Date: 2015/5/4
 * Time: 9:06
 */
public class Bytecode {

    static MethodHandles.Lookup lookup = MethodHandles.lookup();

    public static void main(String[] args) throws Throwable {
        MethodHandle mh = lookup.findVirtual(PerfTestBean.class, "perfTestUseRet", MethodType.methodType(int.class));