1. A method for decoding encoded data using bit nodes and check nodes, the method comprising: (a) performing iterative decoding on the encoded data to generate an original near codeword having one or more unsatisfied check nodes, each unsatisfied check node having one or more associated bit nodes, the one or more associated bit nodes for the one or more unsatisfied check nodes forming a set of associated bit nodes; (b) identifying, from the set of associated bit nodes, a first set of suspicious bit nodes that may be erroneous bit nodes for the original near codeword; (c) adjusting at least one of the suspicious bit nodes in the first set to generate a modified near codeword; and (d) performing iterative decoding on the modified near codeword to attempt to generate a decoded correct codeword for the encoded data, wherein: step (c) followed by step (d) is implemented multiple times for different modified near codewords; and at least one of steps (a)-(d) is implemented in a processor.