public Result<IValue> interpret(IEvaluator<Result<IValue>> __eval) {
__eval.setCurrentAST(this);
__eval.notifyAboutSuspension(this);
Accumulator target = null;
if (__eval.__getAccumulators().empty()) {
throw new UnguardedAppend(this);
}
if (!this.getDataTarget().isEmpty()) {
String label = org.rascalmpl.interpreter.utils.Names.name(this
.getDataTarget().getLabel());
target = findDataTarget(__eval, label);
if (target == null) {
throw new UnguardedAppend(this); // TODO: better error
// message
}
} else {
target = __eval.__getAccumulators().peek();
}
Result<IValue> result = this.getStatement().interpret(__eval);
target.append(result);
return result;
}