code: function isContextSensitive(node) {
              ts.Debug.assert(node.kind !== 147 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node));
              switch (node.kind) {
                  case 179 /* FunctionExpression */:
                  case 180 /* ArrowFunction */:
                      return isContextSensitiveFunctionLikeDeclaration(node);
                  case 171 /* ObjectLiteralExpression */:
                      return ts.forEach(node.properties, isContextSensitive);
                  case 170 /* ArrayLiteralExpression */:
                      return ts.forEach(node.elements, isContextSensitive);
                  case 188 /* ConditionalExpression */:
                      return isContextSensitive(node.whenTrue) ||
                          isContextSensitive(node.whenFalse);
                  case 187 /* BinaryExpression */:
                      return node.operatorToken.kind === 52 /* BarBarToken */ &&
                          (isContextSensitive(node.left) || isContextSensitive(node.right));
                  case 253 /* PropertyAssignment */:
                      return isContextSensitive(node.initializer);
                  case 147 /* MethodDeclaration */:
                  case 146 /* MethodSignature */:
                      return isContextSensitiveFunctionLikeDeclaration(node);
                  case 178 /* ParenthesizedExpression */:
                      return isContextSensitive(node.expression);
              }
              return false;
          }
docs: Returns true if the given expression contains (at any level of nesting) a function or arrow expression that is subject to contextual typing.