testIsTransitionAllowed() {
    assertTrue(
        'Control must support the HOVER state',
        control.isSupportedState(Component.State.HOVER));
    assertFalse(
        'Control must not be in the HOVER state',
        control.hasState(Component.State.HOVER));
    assertTrue(
        'Control must dispatch HOVER transition events',
        control.isDispatchTransitionEvents(Component.State.HOVER));

    assertTrue(
        'Control must be allowed to transition to the HOVER state',
        control.isTransitionAllowed(Component.State.HOVER, true));
    assertEquals(
        'Control must have dispatched one HIGHLIGHT event', 1,
        getEventCount(control, Component.EventType.HIGHLIGHT));
    assertFalse(
        'Control must not be highlighted',
        control.hasState(Component.State.HOVER));

    control.setState(Component.State.HOVER, true);
    control.setDispatchTransitionEvents(Component.State.HOVER, false);

    assertTrue(
        'Control must be allowed to transition from the HOVER state',
        control.isTransitionAllowed(Component.State.HOVER, false));
    assertEquals(
        'Control must not have dispatched any UNHIGHLIGHT events', 0,
        getEventCount(control, Component.EventType.UNHIGHLIGHT));
    assertTrue(
        'Control must still be highlighted',
        control.hasState(Component.State.HOVER));

    control.setSupportedState(Component.State.FOCUSED, false);
    resetEventCount();

    assertFalse(
        'Control doesn\'t support the FOCUSED state',
        control.isSupportedState(Component.State.FOCUSED));
    assertFalse(
        'Control must not be FOCUSED',
        control.hasState(Component.State.FOCUSED));
    assertFalse(
        'Control must not be allowed to transition to the FOCUSED ' +
            'state',
        control.isTransitionAllowed(Component.State.FOCUSED, true));
    assertEquals(
        'Control must not have dispatched any FOCUS events', 0,
        getEventCount(control, Component.EventType.FOCUS));

    control.setEnabled(false);
    resetEventCount();

    assertTrue(
        'Control must support the DISABLED state',
        control.isSupportedState(Component.State.DISABLED));
    assertTrue(
        'Control must be DISABLED', control.hasState(Component.State.DISABLED));
    assertFalse(
        'Control must not be allowed to transition to the DISABLED ' +
            'state, because it is already there',
        control.isTransitionAllowed(Component.State.DISABLED, true));
    assertEquals(
        'Control must not have dispatched any ENABLE events', 0,
        getEventCount(control, Component.EventType.ENABLE));
  }
Tests {@link Control#isTransitionAllowed}.
@suppress {visibility} suppression added to enable type checking