code: @Override
  	public List<Sequence<AminoAcidCompound>> createSequences(
  			Sequence<NucleotideCompound> originalSequence) {
  
  		List<List<AminoAcidCompound>> workingList = new ArrayList<List<AminoAcidCompound>>();
  
  		Iterable<SequenceView<NucleotideCompound>> iter = new WindowedSequence<NucleotideCompound>(
  				originalSequence, 3);
  
  		boolean first = true;
  
  		// If not waiting for a start codon, start translating immediately
  		boolean doTranslate = !waitForStartCodon;
  
  		for (SequenceView<NucleotideCompound> element : iter) {
  			AminoAcidCompound aminoAcid = null;
  
  			int i = 1;
  			Table.CaseInsensitiveTriplet triplet = new Table.CaseInsensitiveTriplet(
  					element.getCompoundAt(i++), element.getCompoundAt(i++),
  					element.getCompoundAt(i++));
  
  			Codon target = null;
  
  			target = quickLookup.get(triplet);
  
  			// Check for a start
  			if (!doTranslate && target.isStart()) {
  				doTranslate = true;
  			}
  
  			if (doTranslate) {
  				if (target != null)
  					aminoAcid = target.getAminoAcid();
  				if (aminoAcid == null && translateNCodons()) {
  					aminoAcid = unknownAminoAcidCompound;
  				} else {
  					if (first && initMetOnly && target.isStart()) {
  						aminoAcid = methionineAminoAcidCompound;
  					}
  				}
  
  				addCompoundsToList(Arrays.asList(aminoAcid), workingList);
  			}
  
  			if (doTranslate && stopAtStopCodons && target.isStop()) {
  				// Check if we need to stop, but dont stop until started!
  				break;
  			}
  
  			first = false;
  		}
  		postProcessCompoundLists(workingList);
  
  		return workingListToSequences(workingList);
  	}
docs: Performs the core conversion of RNA to Peptide. It does this by walking a
  windowed version of the given sequence. Any trailing DNA base pairs are
  ignored according to the specification of {@link WindowedSequence}.