One example,
@Delegate(types=Collection.class)
private final Collection<String> collection = new ArrayList<String>();
On parse/compilation time access to declaration of "collection" field to gets their type (Collection<String>) and use (generic) to generate methods with this generic
public void add(String s)
public void add(Collection<String> s)
...
It's possible?
private interface StringCollection implements Collection<String>() {}
@Delegate(types=StringCollection.class) List<String> list = new ArrayList<String>();