code: private final V getImplicitVar(ImplicitVar var, boolean allowDeclaredVars) {
      S scope = thisScope();
      while (scope != null) {
        if (var.isMadeByScope(scope)) {
          V result = ((AbstractScope<S, V>) scope).implicitVars.get(var);
          if (result == null) {
            ((AbstractScope<S, V>) scope).implicitVars.put(var, result = scope.makeImplicitVar(var));
          }
          return result;
        }
        V result = allowDeclaredVars ? scope.getOwnSlot(var.name) : null;
        if (result != null) {
          return result;
        }
        // Recurse up the parent Scope
        scope = scope.getParent();
      }
      return null;
    }
docs: Get a unique Var object of the given implicit var type.