class Timer {

    public void start() {
        if (!wasSet) throw new IllegalStateException("cannot start a timer that has not been set");
        startTime = clock.getNanoTime();
        targetEndTime = startTime.plus(targetElapsedTime);
    }

    public  Timer();
    public  Timer(HardwareClock clock);

}