import java.util.Arrays;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

import jdk.nashorn.api.scripting.AbstractJSObject;

public class JI9028940 {

	public static void main(String[] args) throws ScriptException {
		 ScriptEngine engine = new ScriptEngineManager().getEngineByName("js"); 
	        engine.put("f", new AbstractJSObject() { 
	            @Override 
	            public boolean isFunction() { 
	                return true; 
	            } 
	            @Override 
	            public Object call(Object thiz, Object... args) { 
	                System.out.println("thiz = " + thiz); 
	                System.out.println("args = " + Arrays.toString(args)); 
	                return null; 
	            } 
	        }); 
	        engine.eval("f(1,2,3);"); 
	        engine.eval("f.apply(null, [1,2,3]);"); 

	}

}
