public int Select1_UnraveledSymbol(int rank, ref int pos_rank)
{
if (rank <= 0) {
return -1;
}
if (pos_rank == int.MinValue) {
pos_rank = (int)this.H.Select1 (rank);
}
// int high_weight = this.H.Rank0 (pos_rank) - 1;
int high_weight = pos_rank - rank;
return (high_weight << this.GetNumLowerBits ()) | ((int)this.L [rank - 1]);
}