/**
   * Returns the mate for a paired-end read. Please note that this method will return an unmapped
   * mate for any single end read as well. Do check if the read is paired before calling getMate().
   *
   * @return The mate, or a constant unmapped mate (for single end reads, or paired end where the
   *     mate is not found).
   */
  public ReadMate getMate() {
    if (entry.hasPairAlignmentLink()) {
      Alignments.RelatedAlignmentEntry link = entry.getPairAlignmentLink();
      String mateChr = getChromosome(link.getTargetIndex());
      int mateStart = link.getPosition();
      boolean mateNegativeStrand = EntryFlagHelper.isMateReverseStrand(entry);

      boolean isReadUnmappedFlag = EntryFlagHelper.isReadUnmapped(entry);
      final ReadMate mate =
          new ReadMate(mateChr, mateStart, mateNegativeStrand, isReadUnmappedFlag);
      return mate;
    } else {
      return unmappedMate;
    }
  }