code: public boolean crosses(Constituent c) {
      return (start() < c.start() && c.start() < end() && end() < c.end()) || (c.start() < start() && start() < c.end() && c.end() < end());
    }
docs: Detects whether this constituent overlaps a constituent without
  nesting, that is, whether they "cross".
  
  @param c The constituent to check against
  @return True if the two constituents cross