protected Term apply(KList klist, MetaData metaData) {
Term term;
Location loc = new Location(metaData.start.line, metaData.start.column, metaData.end.line, metaData.end.column);
Source source = metaData.source;
if (isToken) {
String value = metaData.input.subSequence(metaData.start.position, metaData.end.position).toString();
term = Constant.apply(value, label, Optional.of(loc), Optional.of(source));
} else if (needsLabel) {
term = TermCons.apply(klist.items(), label, loc, source);
} else {
return klist;
}
return term;
}
}