src/vs/platform/keybinding/common/keybindingResolver.ts/KeybindingResolver/_implies
class KeybindingResolver:	private static _implies(p: ContextKeyExpression, q: ContextKeyExpression): boolean {
		const notP = p.negate();

		const terminals = (node: ContextKeyExpression) => {
			if (node.type === ContextKeyExprType.Or) {
				return node.expr;
			}
			return [node];
		};

		let expr = terminals(notP).concat(terminals(q));
		for (let i = 0; i < expr.length; i++) {
			const a = expr[i];
			const notA = a.negate();
			for (let j = i + 1; j < expr.length; j++) {
				const b = expr[j];
				if (notA.equals(b)) {
					return true;
				}
			}
		}

		return false;
	}