code: static boolean isFunctionExpression(Node n) {
      return n.isFunction()
          && !NodeUtil.isFunctionDeclaration(n)
          && !NodeUtil.isMethodDeclaration(n);
    }
docs: Is a FUNCTION node a function expression?
  
  <p>A function expression is a function that:
  <ul>
  <li>has either no name or a name that is not added to the current scope
  <li>AND can be manipulated as an expression
  (assigned to variables, passed to functions, etc.)
  i.e. It is not a method declaration on a class or object literal.
  </ul>
  
  <p>Some examples of function expressions:
  
  <pre>
  (function () {})
  (function f() {})()
  [ function f() {} ]
  var f = function f() {};
  for (function f() {};;) {}
  export default function() {}
  () => 1
  </pre>
  
  <p>Some examples of functions that are <em>not</em> expressions:
  
  <pre>
  function f() {}
  if (x); else function f() {}
  for (;;) { function f() {} }
  export default function f() {}
  ({
  f() {},
  set x(v) {},
  get x() {},
  [expr]() {}
  })
  class {
  f() {}
  set x(v) {}
  get x() {}
  [expr]() {}
  }
  </pre>
  
  @param n A node
  @return Whether n is a function used within an expression.