@Override
public void add(Datum d) {
if (checkDelimiter(d))
addToSuccessor(d);
Datum argsValue = null;
if (args!=null)
argsValue = args.simpleEval(d);
if (argsValue!=null && !(argsValue instanceof Tuple))
throw new RuntimeException("Internal error: Non-tuple returned on evaluation of arguments.");
Datum placeHolderForFuncOutput = getPlaceHolderForFuncOutput();
try{
func.exec((Tuple)argsValue, placeHolderForFuncOutput);
}catch (IOException e){
RuntimeException re = new RuntimeException(e);
re.setStackTrace(e.getStackTrace());