public Type resolve(Scope s, int tag) {
        if (elts.size() == 0) {
            return new ListType();  // list<unknown>
        }

        ListType listType = new ListType();
        for (Node elt : elts) {
            listType.add(resolveExpr(elt, s, tag));
            if (elt instanceof Str) {
                listType.addValue(((Str)elt).getStr());
            }
        }

        return listType;
    }