protected abstract Expression instantiate (Object oldInstance, Encoder out)

Returns an expression whose value is oldInstance. This method is used to characterize the constructor or factory method that should be used to create the given object. For example, the instantiate method of the persistence delegate for the Field class could be defined as follows:

 Field f = (Field)oldInstance;
 return new Expression(f, f.getDeclaringClass(), "getField", new Object[]{f.getName()});
 
Note that we declare the value of the returned expression so that the value of the expression (as returned by getValue) will be identical to oldInstance.

Parameters:
oldInstance    The instance that will be created by this expression.
out    The stream to which this expression will be written.

Returns:  An expression whose value is oldInstance.

Exceptions:
NullPointerException    if out is null and this value is used in the method