AbstractStandardXComponent extends AbstractXIdObject implements XComponent<StandardXClock.StandardTimePhase> { @Override public final void update( final XTime<StandardTimePhase> time) { LOGGER.trace("begin {}.prepareBeforeHook({})", getClass() .getSimpleName(), time); validateArg("time", time, isNotNull()); switch (time.getPhase()) { case PREPARE: prepareBeforeHook(); prepare(); prepareAfterHook(); break; case CALCULATE: calculateBeforeHook(); calculate(); calculateAfterHook(); break; case UPDATE: updateBeforeHook(); update(); updateAfterHook(); break; case CLEAN_UP: cleanUpBeforeHook(); cleanUp(); cleanUpAfterHook(); break; default: throw new AssertionError("unknown clock phase '" + time.getPhase() + "'"); } LOGGER.trace("end {}.prepareBeforeHook()", getClass().getSimpleName()); } protected  AbstractStandardXComponent(
            final XId id,
            final Set<XId> sourceIds,
            final Set<XId> targetIds); @Override final Set<XId> getSourceIds(); @Override final Set<XId> getTargetIds(); @Override final void addBorder(
            final XBorder border); @Override final void removeBorder(
            final XBorder border); @Override final void update(
            final XTime<StandardTimePhase> time); @Override String toString();  }
@Test(expectedExceptions = IllegalArgumentException.class) public final void updateXTimeOnNullThrowsException() { final MockComponent MC = new MockComponent(COMPONENT_ID, null, null); MC.update(null); }