@SuppressWarnings("Convert2Diamond")
    private Expression<T>
    normalSecondLevel(T type, ExpressionReader reader) throws ParseException {
        Multiply<T> ret = new Multiply<T>(thirdLevel(type, reader));
        String s = reader.next();
        while (s.equals(" * ") || s.equals(" / ")) {
            reader.consume();
            switch (s) {
                case " * ":
                    ret.addArgument(new Power<T>(thirdLevel(type, reader), new Const<T>(type.parse("1"))));
                    break;
                case " / ":
                    ret.addArgument(new Power<T>(thirdLevel(type, reader), new UnaryMin<T>(new Const<T>(type.parse("1")))));
                    break;
            }
            s = reader.next();
            if (s.equals("EOF")) {
                break;
            }
        }
        return ret.size() > 1 ? ret : ret.getOnlyArgument();
    }