private void doEvaluate() throws Throwable {
Statement delegate = new BasicStatement( base, this );
if( needsCallback() ) {
delegate = new CallbackStatement( base, this, description, target );
} else if( needsPoll() ) {
delegate = new PollStatement( base, this, description, target );
}
delegate.evaluate();
}