def _detect(self):
        """ Detects if an expression makes use of any deprecated standards.

        Recursively visit the calls
        Returns:
            list: {'vuln', 'filename,'contract','func', 'deprecated_references'}

        """
        results = []
        for contract in self.contracts:
            deprecated_references = self.detect_deprecated_references_in_contract(contract)
            if deprecated_references:
                for deprecated_reference in deprecated_references:
                    source_object = deprecated_reference[0]
                    deprecated_entries = deprecated_reference[1]
                    info = 'Deprecated standard detected @ {}:\n'.format(source_object.source_mapping_str)

                    for (dep_id, original_desc, recommended_disc) in deprecated_entries:
                        info += "\t- Usage of \"{}\" should be replaced with \"{}\"\n".format(original_desc,
                                                                                              recommended_disc)


                    # Generate relevant JSON data for this deprecated standard.
                    json = self.generate_json_result(info)
                    if isinstance(source_object, StateVariableSolc) or isinstance(source_object, StateVariable):
                        self.add_variable_to_json(source_object, json)
                    else:
                        self.add_nodes_to_json([source_object], json)

                    results.append(json)

        return results
Detects if an expression makes use of any deprecated standards.

        Recursively visit the calls
        Returns:
            list: {'vuln', 'filename,'contract','func', 'deprecated_references'}