.injectFromInstanceContext();
PlasticMethod delegateMethod = plasticClass.introducePrivateMethod(interfaceType.getName(), "delegate",
null, null);
delegateMethod.changeImplementation(new InstructionBuilderCallback()
{
public void doBuild(InstructionBuilder builder)
{
builder.loadThis().getField(objectCreatorField);
builder.invoke(CREATE_OBJECT);
builder.checkcast(interfaceType).returnResult();
}
});
for (Method method : interfaceType.getMethods())
{
plasticClass.introduceMethod(method).delegateTo(delegateMethod);
}
if (!plasticClass.isMethodImplemented(PlasticUtils.TO_STRING_DESCRIPTION))
{
final PlasticField descriptionField = plasticClass.introduceField(String.class, "description")
.injectFromInstanceContext();
plasticClass.introduceMethod(PlasticUtils.TO_STRING_DESCRIPTION, new InstructionBuilderCallback()
{
public void doBuild(InstructionBuilder builder)
{
builder.loadThis().getField(descriptionField).returnResult();
}