@Override
	public XValue invoke(XRuntime runtime, XExec exec, int id, XValue thiz, XValue[] params, List<XValue> list, Map<String, XValue> map) {
		switch (id) {
		case 0:
			return thiz;
		case 1:
			return add(runtime, thiz, params[0]);
		case 2:
			return indexOf(runtime, thiz, params[0]);
		case 3:
			return substring(runtime, thiz, params[0], params[1]);
		case 4:
			return length(runtime, thiz);
		case 5:
			return charAt(runtime, thiz, params[0]);
		default:
			break;
		}
		return super.invoke(runtime, exec, id, thiz, params, list, map);
	}