class Handle
    {
        private final SelectableChannel fd;
        private final IPollEvents       handler;

        private int     ops;
        private boolean cancelled;

        public Handle(SelectableChannel fd, IPollEvents handler)
        {
            assert (fd != null);
            assert (handler != null);
            this.fd = fd;
            this.handler = handler;
        }

        @Override
        public int hashCode()
        {<FILL_FUNCTION_BODY>}

        @Override
        public boolean equals(Object other)
        {
            if (this == other) {
                return true;
            }
            if (other == null) {
                return false;
            }
            if (!(other instanceof Handle)) {
                return false;
            }
            Handle that = (Handle) other;
            return this.fd.equals(that.fd) && this.handler.equals(that.handler);
        }

        @Override
        public String toString()
        {
            return "Handle-" + fd;
        }
    }

            final int prime = 31;
            int result = 1;
            result = prime * result + fd.hashCode();
            result = prime * result + handler.hashCode();
            return result;
        
<methods>public void addTimer(long, zmq.poll.IPollEvents, int) ,public void cancelTimer(zmq.poll.IPollEvents, int) ,public final int getLoad() <variables>private boolean changed,private final java.util.concurrent.atomic.AtomicInteger load,private final MultiMap<java.lang.Long,zmq.poll.PollerBase.TimerInfo> timers,protected final non-sealed java.lang.Thread worker