/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.lang.reflect.features;
import gw.lang.PublishedName;
public interface IInvokableFeatureReference<R, T> extends IFeatureReference<R, T>
{
/**
* Evaluates reflectively
*/
public Object evaluate( Object... args );
/**
* Returns the method reference as a block in an invokation-friendly syntax
*/
@PublishedName("invoke")
T getinvoke();
/**
* Returns the method reference as a block in a transformation-friendly syntax
*/
T toBlock();
/**
* @return an array of bound values if the feature had them, and null otherwise
*/
Object[] getBoundArgValues();
}