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
docs: Return default values for start and end if they are None.
          If this IntelHex object is empty then it's error to
          invoke this method with both start and end as None.