assignRational(shape, 2, 4);
assignRational(shape, 2, 2);
    private void computeRational ()    {        if (glyphs.size() > 0) {            if (glyphs.size() == 1) {                // Just one symbol                Shape shape = glyphs.first()                                    .getShape();                if (shape != null) {                    switch (shape) {                    case TIME_FOUR_FOUR :                        assignRational(shape, 4, 4);                        return;                    case TIME_TWO_TWO :                        assignRational(shape, 2, 2);                        return;                    case TIME_TWO_FOUR :                        assignRational(shape, 2, 4);                        return;                    case TIME_THREE_FOUR :                        assignRational(shape, 3, 4);                        return;                    case TIME_SIX_EIGHT :                        assignRational(shape, 6, 8);                        return;                    case COMMON_TIME :                        assignRational(shape, 4, 4);                        return;                    case CUT_TIME :                        assignRational(shape, 2, 4);                        return;                    default :                        logger.warning(                            "Weird single time component : " + shape +                            " for glyph#" + glyphs.first().getId());                        this.shape = NO_LEGAL_SHAPE;                    }                }            } else {                // Several symbols                // Dispatch symbols on top and bottom parts                numerator = denominator = null;                for (Glyph glyph : glyphs) {                    int     pitch = getStaff()                                        .unitToPitch(                        computeGlyphCenter(glyph).y);                    Integer value = getNumericValue(glyph);                    if (logger.isFineEnabled()) {                        logger.fine(                            "pitch=" + pitch + " value=" + value + " glyph=" +                            glyph);                    }                    if (value != null) {                        if (pitch < 0) {                            if (numerator == null) {                                numerator = 0;                            }                            numerator = (10 * numerator) + value;                        } else if (pitch > 0) {                            if (denominator == null) {                                denominator = 0;                            }                            denominator = (10 * denominator) + value;                        } else {                            logger.warning(                                "Multi-symbol time signature" +                                " with a component of pitch position 0");                        }                    } else {                        logger.warning(                            "Time signature component" +                            " with no numeric value");                    }                }            }            if (logger.isFineEnabled()) {                logger.fine(                    "numerator=" + numerator + " denominator=" + denominator);            }        }    }