}
protected void fail(int l, int c, String message, String expected, String got) throws ControlFlow {
String file = ((IokeSystem)IokeObject.data(runtime.system)).currentFile();
final IokeObject condition = IokeObject.as(IokeObject.getCellChain(runtime.condition,
this.message,
this.context,
"Error",
"Parser",
"Syntax"), this.context).mimic(this.message, this.context);
condition.setCell("message", this.message);
condition.setCell("context", this.context);
condition.setCell("receiver", this.context);
if(expected != null) {
condition.setCell("expected", runtime.newText(expected));
}
if(got != null) {
condition.setCell("got", runtime.newText(got));
}
condition.setCell("file", runtime.newText(file));
condition.setCell("line", runtime.newNumber(l));
condition.setCell("character", runtime.newNumber(c));
condition.setCell("text", runtime.newText(file + ":" + l + ":" + c + ": " + message));
runtime.errorCondition(condition);
}