in packages/flow-remove-types/index.js [324:360]
function removeNode(context, node) {
var removedNodes = context.removedNodes;
var length = removedNodes.length;
var index = length;
// Check for line's leading and trailing space to be removed.
var spaceNode = context.pretty ? getLeadingSpaceNode(context, node) : null;
var lineNode = context.pretty ? getTrailingLineNode(context, node) : null;
while (index > 0 && endOf(removedNodes[index - 1]) > startOf(node)) {
index--;
}
if (index === length) {
if (spaceNode) {
removedNodes.push(spaceNode);
}
removedNodes.push(node);
if (lineNode) {
removedNodes.push(lineNode);
}
} else {
if (lineNode) {
if (spaceNode) {
removedNodes.splice(index, 0, spaceNode, node, lineNode);
} else {
removedNodes.splice(index, 0, node, lineNode);
}
} else if (spaceNode) {
removedNodes.splice(index, 0, spaceNode, node);
} else {
removedNodes.splice(index, 0, node);
}
}
return false;
}