code: @SuppressWarnings("unchecked")
  	protected <C extends Compound> Sequence<C> reverseSequence(Sequence<C> sequence) {
  		if(getStrand() != Strand.NEGATIVE) {
  			return sequence;
  		}
  
  		Sequence<C> reversed = new ReversedSequenceView<C>(sequence);
  		// "safe" operation as we have tried to check this
  		if(canComplement(sequence)) {
  			Sequence<ComplementCompound> casted = (Sequence<ComplementCompound>) reversed;
  			ComplementSequenceView<ComplementCompound> complement =
  					new ComplementSequenceView<ComplementCompound>(casted);
  			return (Sequence<C>)complement;
  		}
  		return reversed;
  	}
docs: Reverses and (if possible) complements the Sequence so as to represent
  the reverse strand (if one exists). Also does checking to see if the
  location we are on is on the reverse strand or not.