docs: def _applyInter(finter0, finter1, conflict="ignore"):
          """
          Return the restriction of first interval by the second.
  
          Args:
  
          - inter0, inter1 (tuple of Feature): intervals
  
          Return(tuple of Feature): the resulting interval
          - conflict(str): if a property hasn't compatible values/constrains, do:
             - ``"error"``: raise exception.
             - ``"ignore"``: return None.
             - ``"me"``: return finter0.
             - ``"other"``: return finter1.
          """
  
          OPTIONS = ["error", "ignore", "me", "other"]
          assert conflict in OPTIONS, "Invalid value in `conflict`."
  
          # Compute the comparison of the interval extremes
          min_int = -2**63
          # Remember, None <= number and None <= None are True, but number <= None is False.
          inter0 = tuple([f.getValue() if f else min_int for f in finter0])
          inter1 = tuple([f.getValue() if f else min_int for f in finter1])
          le00 = inter0[0] <= inter1[0]                           # finter0[0] <= finter1[0]
          le01 = inter1[1] == min_int or inter0[0] <= inter1[1]   # finter0[0] <= finter1[1]
          le11 = inter1[1] == min_int or (inter0[1] != min_int and inter0[1] <= inter1[1])  # finter0[1] <= finter1[1]
          ge00 = not le00 or inter0[0] == inter1[0]               # finter0[0] >= finter1[0]
          ge10 = inter0[1] == min_int or inter0[1] >= inter1[0]   # finter0[1] >= finter1[0]
  
          # print "\n".join("%s: %s" % (s, v) for v, s in [
          #    (le00, "finter0[0] <= finter1[0]"),
          #    (le01, "finter0[0] <= finter1[1]"),
          #    (le11, "finter0[1] <= finter1[1]"),
          #    (ge00, "finter0[0] >= finter1[0]"),
          #    (ge10, "finter0[1] >= finter1[0]") ])
  
          # First interval is (  ), second interval is [  ]
          if le00 and ge10 and le11:                       # ( [ ) ] chain first-second
              return finter1[0], finter0[1]
          elif le00 and ge10 and not le11:                 # ( [ ] )  second is inside first
              return finter1
          elif ge00 and le01 and le11:                     # [ ( ) ] first is inside second
              return finter0
          elif ge00 and le01 and not le11:                 # [ ( ] ) chain second-first
              return finter0[0], finter1[1]
          elif conflict == "me":
              return finter0
          elif conflict == "other":
              return finter1
          elif conflict == "error":
              raise Exception("Disjoint intervals!")
          return None