nodes: 0, module; 1, function_definition; 2, function_name:_get_min_addr; 3, parameters; 4, block; 5, identifier:self; 6, expression_statement; 7, if_statement; 8, return_statement; 9, comment:"""
          Get the minimum address out of all regions. We assume self._regions is sorted.
  
          :return: The minimum address.
          :rtype:  int
          """; 10, not_operator; 11, block; 12, call; 13, attribute; 14, if_statement; 15, return_statement; 16, identifier:next; 17, argument_list; 18, identifier:self; 19, identifier:_regions; 20, comparison_operator:self.project.arch.name != "Soot"; 21, block; 22, None; 23, call; 24, attribute; 25, string:"Soot"; 26, expression_statement; 27, attribute; 28, argument_list; 29, attribute; 30, identifier:name; 31, call; 32, attribute; 33, identifier:irange; 34, attribute; 35, identifier:arch; 36, attribute; 37, argument_list; 38, identifier:self; 39, identifier:_regions; 40, identifier:self; 41, identifier:project; 42, identifier:l; 43, identifier:error; 44, string:"self._regions is empty or not properly set."
code: def _get_min_addr(self):
          """
          Get the minimum address out of all regions. We assume self._regions is sorted.
  
          :return: The minimum address.
          :rtype:  int
          """
  
          if not self._regions:
              if self.project.arch.name != "Soot":
                  l.error("self._regions is empty or not properly set.")
              return None
  
          return next(self._regions.irange())