code: function(ASTnode, strict) {
        var property;
        var node = ASTnode;
        switch (node.type) {
          case 'ReturnStatement':
            property = 'argument';
            break;
          case 'ArrowFunctionExpression':
            property = 'body';
            break;
          default:
            node = utils.findReturnStatement(node);
            if (!node) {
              return false;
            }
            property = 'argument';
        }
  
        var returnsConditionalJSXConsequent =
          node[property] &&
          node[property].type === 'ConditionalExpression' &&
          node[property].consequent.type === 'JSXElement'
        ;
        var returnsConditionalJSXAlternate =
          node[property] &&
          node[property].type === 'ConditionalExpression' &&
          node[property].alternate.type === 'JSXElement'
        ;
        var returnsConditionalJSX =
          strict ? (returnsConditionalJSXConsequent && returnsConditionalJSXAlternate) :
          (returnsConditionalJSXConsequent || returnsConditionalJSXAlternate);
  
        var returnsJSX =
          node[property] &&
          node[property].type === 'JSXElement'
        ;
        var returnsReactCreateElement =
          node[property] &&
          node[property].callee &&
          node[property].callee.property &&
          node[property].callee.property.name === 'createElement'
        ;
  
        return Boolean(
          returnsConditionalJSX ||
          returnsJSX ||
          returnsReactCreateElement
        );
      }
docs: Check if the node is returning JSX
  
  @param {ASTNode} ASTnode The AST node being checked
  @param {Boolean} strict If true, in a ternary condition the node must return JSX in both cases
  @returns {Boolean} True if the node is returning JSX, false if not