A big lesson from my last article: don't get the engine fault code(s) from an auto parts store! They use dumb scanners that cannot get correctly all the code(s). In my case, the code they read was P0456 - slow vapor leak. So I replaced the gas cap; the engine lights were gone for about 3 weeks and I thought it was fixed.
Then the lights showed up again. I went to the store again and got C1201. Weird code, so I went to another store and, this time, got P0456. Two different codes from two stores! It was at that moment, I said to myself: I must read the code by myself, otherwise I never know exactly what's wrong in my car.
A friend led me to OBD2 and ELM327. After some search, the BAFX stood out, although it cost about $10 more than the $10 ones.
I regret that I did not get one sooner. Even if you don't fix your car by yourself, you still should get one. For $20, you can have a good understanding about the trouble you are facing and thus a dealer will be hard to rip you off or make things even worse.
In my case, water went into the canister filter and pump assembly and generated 5 codes: P043E, P043F, P2401, P2402, P2419. Toyota and Scion acknowledged this failure as a design flaw but they never figured out the real cause and fix. Some people got the expensive canister replaced several times and $$$$ spent on parts and labor, but the lights will still come back. A canister cost anywhere from $120 (used), $230 (3rd-party) to $650 (dealer), plus at least 3 hours of labor to install.
Well, I found out the real cause and fixed it with a condom and some blow job (no kidding) done on the pump assembly. I did not replace the canister nor any part, neither did I used any special tool other than my mouth. Watch this video for details:
[update] In the end, I had to open up the pump/valve module to clean the water in the pump orifice: