public static Type max(Type p1, Type p2) {
        if (!numeric(p1) || !numeric(p2)) {
            return null;
        } else if (p1 == Type.Fixed || p2 == Type.Fixed) {
            return Type.Fixed;
        } else if (p1 == Type.Integer || p2 == Type.Integer) {
            return Type.Integer;
        } else {
            return Type.Char;
        }
    }