_flattenMemberExpression(node) {
    const results = [];
    let target = node;

    while (target) {
      if (target.type === 'ThisExpression') {
        results.push('this');
        break;
      } else if (target.type === 'Identifier') {
        results.push(target.name);
        break;
      } else if (target.type === 'CallExpression') {
        results.push(target.callee.name);
        break;
      } else {
        results.push(target.property.name);
        target = target.object;
      }
    }

    return results.reverse().join('.');
  }
flatten member expression property name.
if node structure is [foo [bar [baz [this] ] ] ], flatten is ``this.baz.bar.foo``
@param {ASTNode} node - target member expression node.
@returns {string} flatten property.
@private