class Timer
    {
        private final org.zeromq.timer.ZTimer.Timer delegate;

        Timer(org.zeromq.timer.ZTimer.Timer delegate)
        {
            this.delegate = delegate;
        }
    }

    /**
     * @deprecated use {@link org.zeromq.timer.TimerHandler} instead
     */
    @Deprecated
    public interface Handler extends org.zeromq.timer.TimerHandler
    {
    }

    private final org.zeromq.timer.ZTimer timer = new org.zeromq.timer.ZTimer();

    /**
     * Add timer to the set, timer repeats forever, or until cancel is called.
     * @param interval the interval of repetition in milliseconds.
     * @param handler the callback called at the expiration of the timer.
     * @param args the optional arguments for the handler.
     * @return an opaque handle for further cancel.
     */
    public Timer add(long interval, Handler handler, Object... args)
    {<FILL_FUNCTION_BODY>

        if (handler == null) {
            return null;
        }
        return new Timer(timer.add(interval, handler, args));
    
<no_super_class>