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

        ListType listType = null;
        for (Node elt : elts) {
            if (listType == null) {
                listType = new ListType(resolveExpr(elt, s, tag));
            } else {
                listType.add(resolveExpr(elt, s, tag));
            }
        }

        return listType;
    }