code: public static int getCDSLengthReverse(List<Integer> exonStarts, List<Integer> exonEnds, int cdsStart, int cdsEnd) {
  
  		int codingLength = 0;
  
  		if (cdsEnd < cdsStart) {
  			int tmp = cdsEnd;
  			cdsEnd = cdsStart;
  			cdsStart = tmp;
  		}
  		cdsStart = cdsStart + base;
  
  		// map reverse
  		for (int i = exonStarts.size() - 1; i >= 0; i--) {
  
  			int end = exonStarts.get(i);
  			int start = exonEnds.get(i);
  
  			if (end < start) {
  				int tmp = end;
  				end = start;
  				start = tmp;
  			}
  			start = start + base;
  
  			if ((start < cdsStart && end < cdsStart) || (start > cdsEnd && end > cdsEnd))
  				continue;
  
  			if (start < cdsStart)
  				start = cdsStart;
  
  			if (end > cdsEnd)
  				end = cdsEnd;
  
  			codingLength += (end - start + 1);
  		}
  		return codingLength - 3;
  	}
docs: Get the length of the coding sequence
  
  @param exonStarts
  @param exonEnds
  @param cdsStart
  @param cdsEnd
  @return