I think we should define constants A,C,G,T,BACK, to replace extension indices 0,1,2,3,4, in our usage throughout the code. This would make a lot of calls less obscure. In particular BfSearchResult(kmer, true, BACK,2,contig) is a lot clearer than BfSearchResult(kmer,true,4,2,contig). In the latter case the 4,2 could be swapped to 2,4, and a casual reader would have no idea anything had gone wrong.
Another option would be an enum type- worth looking into whether there are drawbacks to that vs. an int. If there are no drawbacks an enum would be even better, as then the compile could catch an error such as swapping BACK and 2 above, since BACK wouldn't be an int.