code: def _detect(self):
          
          results = []
          for c in self.contracts:
              shadowing = self.detect_shadowing(c)
              if shadowing:
                  for all_variables in shadowing:
                      shadow = all_variables[0]
                      variables = all_variables[1:]
                      info = '{}.{} ({}) shadows:\n'.format(shadow.contract.name,
                                                          shadow.name,
                                                          shadow.source_mapping_str)
                      for var in variables:
                          info += "\t- {}.{} ({})\n".format(var.contract.name,
                                                         var.name,
                                                         var.source_mapping_str)
  
                      json = self.generate_json_result(info)
                      self.add_variables_to_json(all_variables, json)
                      results.append(json)
  
          return results
docs: Detect shadowing
  
          Recursively visit the calls
          Returns:
              list: {'vuln', 'filename,'contract','func', 'shadow'}