private Arg decode_value(EObject src) {
if (src instanceof ETuple2) {
ETuple2 tup = (ETuple2) src;
if (tup.elem1 == ATOM_ATOM) {
return new Arg(tup.elem2, EATOM_TYPE);
} else if (tup.elem1 == LITERAL_ATOM) {
return new Arg(tup.elem2);
} else if (tup.elem1 == INTEGER_ATOM) {
return new Arg(tup.elem2);
} else if (tup.elem1 == FLOAT_ATOM) {
return new Arg(tup.elem2);
}
} else if (src == NIL_ATOM) {
return new Arg(ERT.NIL, ENIL_TYPE);
}
throw new Error("unknown value:" + src);