in packages/flow-remove-types/index.js [490:517]
function isRemovedToken(context, token) {
var removedNodes = context.removedNodes;
var nodeIdx = removedNodes.length - 1;
// Find the last removed node which could possibly contain this token.
while (nodeIdx >= 0 && startOf(removedNodes[nodeIdx]) > startOf(token)) {
nodeIdx--;
}
var node = removedNodes[nodeIdx];
// This token couldn't be removed if not contained within the removed node.
if (nodeIdx === -1 || endOf(node) < endOf(token)) {
return false;
}
// Iterate through the tokens contained by the removed node to find a match.
var tokens = context.ast.tokens;
var tokenIdx = findTokenIndexAtStartOfNode(tokens, node);
while (endOf(tokens[tokenIdx]) <= endOf(node)) {
if (token === tokens[tokenIdx]) {
return true;
}
tokenIdx++;
}
return false;
}