private boolean isSubtypeUncheckedInternal(Type t, Type s, Warner warn) {
            if (t.tag == ARRAY && s.tag == ARRAY) {
                if (((ArrayType)t).elemtype.tag <= lastBaseTag) {
                    return isSameType(elemtype(t), elemtype(s));
                } else {
                    return isSubtypeUnchecked(elemtype(t), elemtype(s), warn);
                }
            } else if (isSubtype(t, s)) {
                return true;
            }
            else if (t.tag == TYPEVAR) {
                return isSubtypeUnchecked(t.getUpperBound(), s, warn);
            }
            else if (s.tag == UNDETVAR) {
                UndetVar uv = (UndetVar)s;
                if (uv.inst != null)
                    return isSubtypeUnchecked(t, uv.inst, warn);
            }
            else if (!s.isRaw()) {
                Type t2 = asSuper(t, s.tsym);
                if (t2 != null && t2.isRaw()) {
                    if (isReifiable(s))
                        warn.silentWarn(LintCategory.UNCHECKED);
                    else
                        warn.warn(LintCategory.UNCHECKED);
                    return true;
                }
            }
            return false;
        }