public boolean equals(Object o) {
      if (this == o) return true;
      if (!(o instanceof LabeledConstituent)) return false;

      final LabeledConstituent labeledConstituent = (LabeledConstituent) o;

      if (end != labeledConstituent.end) return false;
      if (start != labeledConstituent.start) return false;
      if (label != null ? !label.equals(labeledConstituent.label) : labeledConstituent.label != null) return false;

      return true;
    }