code: function buildMatchMemberExpression(match, allowPartial) {
    var parts = match.split(".");
  
    return function (member) {
      // not a member expression
      if (!t.isMemberExpression(member)) return false;
  
      var search = [member];
      var i = 0;
  
      while (search.length) {
        var node = search.shift();
  
        if (allowPartial && i === parts.length) {
          return true;
        }
  
        if (t.isIdentifier(node)) {
          // this part doesn't match
          if (parts[i] !== node.name) return false;
        } else if (t.isLiteral(node)) {
          // this part doesn't match
          if (parts[i] !== node.value) return false;
        } else if (t.isMemberExpression(node)) {
          if (node.computed && !t.isLiteral(node.property)) {
            // we can't deal with this
            return false;
          } else {
            search.push(node.object);
            search.push(node.property);
            continue;
          }
        } else {
          // we can't deal with this
          return false;
        }
  
        // too many parts
        if (++i > parts.length) {
          return false;
        }
      }
  
      return true;
    };
  }
docs: Build a function that when called will return whether or not the
  input `node` `MemberExpression` matches the input `match`.
  
  For example, given the match `React.createClass` it would match the
  parsed nodes of `React.createClass` and `React["createClass"]`.