class Handler {

  /**
   * Beginning of the exception handler's scope (inclusive).
   */
  Label start;

  /**
   * End of the exception handler's scope (exclusive).
   */
  Label end;

  /**
   * Beginning of the exception handler's code.
   */
  Label handler;

  /**
   * Internal name of the type of exceptions handled by this handler, or <tt>null</tt> to catch any
   * exceptions.
   */
  String desc;

  /**
   * Constant pool index of the internal name of the type of exceptions handled by this handler, or
   * 0 to catch any exceptions.
   */
  int type;

  /**
   * Next exception handler block info.
   */
  Handler next;

  /**
   * Removes the range between start and end from the given exception handlers.
   *
   * @param h an exception handler list.
   * @param start the start of the range to be removed.
   * @param end the end of the range to be removed. Maybe null.
   * @return the exception handler list with the start-end range removed.
   */
  static Handler remove(Handler h, Label start, Label end) {<FILL_FUNCTION_BODY>}
}

    if (h == null) {
      return null;
    } else {
      h.next = remove(h.next, start, end);
    }
    int hstart = h.start.position;
    int hend = h.end.position;
    int s = start.position;
    int e = end == null ? Integer.MAX_VALUE : end.position;
    // if [hstart,hend[ and [s,e[ intervals intersect...
    if (s < hend && e > hstart) {
      if (s <= hstart) {
        if (e >= hend) {
          // [hstart,hend[ fully included in [s,e[, h removed
          h = h.next;
        } else {
          // [hstart,hend[ minus [s,e[ = [e,hend[
          h.start = end;
        }
      } else if (e >= hend) {
        // [hstart,hend[ minus [s,e[ = [hstart,s[
        h.end = start;
      } else {
        // [hstart,hend[ minus [s,e[ = [hstart,s[ + [e,hend[
        Handler g = new Handler();
        g.start = end;
        g.end = h.end;
        g.handler = h.handler;
        g.desc = h.desc;
        g.type = h.type;
        g.next = h.next;
        h.end = start;
        h.next = g;
      }
    }
    return h;
  
<no_super_class>