diff --git a/index.js b/index.js
index <HASH>..<HASH> 100644
--- a/index.js
+++ b/index.js
@@ -13,9 +13,6 @@ function isBlockScope(node) {
 function declaresArguments(node) {
   return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration';
 }
-function declaresThis(node) {
-  return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration';
-}
 
 function reallyParse(source) {
   try {
@@ -157,16 +154,7 @@ function findGlobals(source) {
   }
   walk.ancestor(ast, {
     'VariablePattern': identifier,
-    'Identifier': identifier,
-    'ThisExpression': function (node, parents) {
-      for (var i = 0; i < parents.length; i++) {
-        if (declaresThis(parents[i])) {
-          return;
-        }
-      }
-      node.parents = parents;
-      globals.push(node);
-    }
+    'Identifier': identifier
   });
   var groupedGlobals = {};
   globals.forEach(function (node) {
Remove all ThisExpression handling

Before <I>, root-level ThisExpressions are pushed into the globals
object, but are then filtered out since node.name is undefined. In
<I>, this behavior is "fixed," since `this` as a global is added to
the output. Unfortunately, this represents an API break and is reverted.
So, for now let's simply remove all ThisExpression handling.