MemberExpression(path) {
        if (!isAppropriateMember(path)) {
          return;
        }

        let node = path.node;

        path.replaceWith(
          t.conditionalExpression(
            t.binaryExpression(
              '===',
              t.unaryExpression(
                'typeof',
                t.identifier('Symbol'),
                true
              ),
              t.stringLiteral('function')
            ),
            node,
            t.stringLiteral(`@@${node.property.name}`)
          )
        );

        // We should stop to avoid infinite recursion, since Babel
        // traverses replaced path, and again would hit our transform.
        path.stop();
      }
Transforms function properties of the `Symbol` into
the presence check, and fallback string "@@<name>".

Example:

  Symbol.iterator;

Transformed to:

  typeof Symbol.iterator === 'function' ? Symbol.iterator : '@@iterator';