When an agent changes its form, it is not likely that the agent's new form is able to efficiently interpret the objects passed to it via invocations to its old form. Moreover, one of the purposes of agent morphing is to enable efficient and direct communications between agents in their native forms whenever possible.
The solution being developed in our current research is one that permits the (inefficient) invocation of remote agents that differ in form, coupled with the implementation of notification protocols among agents that enable agents to switch to an efficient invocation protocol whenever possible. Specifically, we employ adaptors that are present in all agents capable of morphing. Each adaptor has two forms: (1) the neutral form is visible to the agent's neutral implementation; (2) the native form is visible to the native code. An adaptor is much like an object `policy' in that all invocations in the respective agent forms are directed to the appropriate adaptor. The adaptor, then, knows about the agent's current form, has methods generated from its interface definition for request translation from one form to the other, and is able to deal with issues arising from the agent's concurrent invocation in both of its forms.
The overheads of using agent adaptors are small when agents communicate in the same form, as was the case for the overheads incurred by policies evaluated in [35]. When adaptors must translate between forms, overheads depend on the complexities of invocation parameters.