code: def _get_start_end(self, start=None, end=None, size=None):
          if (start,end) == (None,None) and self._buf == {}:
              raise EmptyIntelHexError
          if size is not None:
              if None not in (start, end):
                  raise ValueError("tobinarray: you can't use start,end and size"
                                   " arguments in the same time")
              if (start, end) == (None, None):
                  start = self.minaddr()
              if start is not None:
                  end = start + size - 1
              else:
                  start = end - size + 1
                  if start < 0:
                      raise ValueError("tobinarray: invalid size (%d) "
                                       "for given end address (%d)" % (size,end))
          else:
              if start is None:
                  start = self.minaddr()
              if end is None:
                  end = self.maxaddr()
              if start > end:
                  start, end = end, start
          return start, end