code: public String getCodingSequence() {
  		String sequence = this.getSequenceAsString(getBioBegin(), getBioEnd(), getStrand());
  
  		if (getStrand() == Strand.NEGATIVE) {
  			//need to take complement of sequence because it is negative and we are returning a coding sequence
  			StringBuilder b = new StringBuilder(getLength());
  			CompoundSet<NucleotideCompound> compoundSet = this.getCompoundSet();
  			for (int i = 0; i < sequence.length(); i++) {
  				String nucleotide = String.valueOf(sequence.charAt(i));
  				NucleotideCompound nucleotideCompound = compoundSet.getCompoundForString(nucleotide);
  				b.append(nucleotideCompound.getComplement().getShortName());
  			}
  			sequence = b.toString();
  		}
  		//  sequence = sequence.substring(phase);
  		return sequence;
  	}
docs: A CDS sequence if negative stranded needs to be reverse complement
  to represent the actual coding sequence. When getting a ProteinSequence
  from a TranscriptSequence this method is callled for each CDSSequence
  {@link http://www.sequenceontology.org/gff3.shtml}
  {@link http://biowiki.org/~yam/bioe131/GFF.ppt}
  @return coding sequence