support constant expressions