To be honest, I'm very new to the team and I don't know if there's a methodical way to figure those things out. I don't think there is, sadly. Some things in the code have very descriptive names or comments, but others sometimes don't, as is the case of `assumeTrue`. I'd say if you can't find an explanation by looking at the code, or in the TypeScript wiki, or in [URL] your best bet is to ask someone from the team and we'll be able to help.
@sandersn and [USER] might have more tips about where/who to ask those kinds of question.
About `assumeTrue`'s meaning: to give you an example, I figured this one out by looking at the code in `narrowTypeByEquality` and seeing that `assumeTrue` had its boolean value flipped if the condition we had was an inequality (e.g. `a !== b`).
**tl;dr** in `narrowTypeByEquality(type, operator, value, assumeTrue)`, if `assumeTrue` is true we should assume `value` has type `type`. Otherwise, we should assume `value` does *not* have type `type`.
To give you an example:
[TRIPLE QUOTE].