switch (infos.info) { case LazyType():  return infos.info; }
    private final Type rawInfoAt(Phase phase) {        //if (infos == null) return Type.NoType;//DEBUG        assert infos != null : this;        assert phase != null : this;        if (infos.limit().precedes(phase)) {            while (infos.limit().next != phase) {                Phase next = infos.limit().next;                Type info = transformInfo(next, infos.info);                if (info != infos.info) {                    infos = new TypeIntervalList(infos, info, next);                } else {                    infos.setLimit(next);                }            }            return infos.info;        } else {            TypeIntervalList infos = this.infos;            while (!infos.start.precedes(phase) && infos.prev != null)                infos = infos.prev;            return infos.info;        }    }