if ( function.apply( newBinding.getABox(), arguments ) ) {
VariableBinding newPartial = new VariableBinding( newBinding.getABox() );
for ( int i = 0; i < arguments.length; i++ ) {
AtomDObject arg = atom.getAllArguments().get( i );
Literal result = arguments[ i ];
Literal current = newBinding.get( arg );
if ( current != null && !current.equals( result ) ) {
// Oops, we overwrote an argument.
if ( newBinding.get( arg ) != null )
throw new InternalReasonerException( "General Function implementation overwrote one of its arguments!" );
ABox.log.info( "Function results in multiple simultaneous values for variable" );
return;