class SlaveUpdatePuller implements Runnable, UpdatePuller, CancelListener {

    @Override
    public void start()
    {
        if ( shutdownLatch != null )
        {
            return; // This SlaveUpdatePuller has already been initialised
        }

        shutdownLatch = new BinaryLatch();
        JobHandle handle = jobScheduler.schedule( Group.PULL_UPDATES, this );
        handle.registerCancelListener( this );
    }

      SlaveUpdatePuller(
            RequestContextFactory requestContextFactory,
            Master master,
            LastUpdateTime lastUpdateTime,
            LogProvider logging,
            InstanceId instanceId,
            AvailabilityGuard availabilityGuard,
            InvalidEpochExceptionHandler invalidEpochHandler,
            JobScheduler jobScheduler,
            Monitor monitor );

}