code: func (t *StandardTokenizerImpl) zzRefill() (bool, error) {
  	// first: make room (if you can)
  	if t.zzStartRead > 0 {
  		t.zzEndRead += t.zzFinalHighSurrogate
  		t.zzFinalHighSurrogate = 0
  		copy(t.zzBuffer, t.zzBuffer[t.zzStartRead:t.zzEndRead])
  
  		// translate stored positions
  		t.zzEndRead -= t.zzStartRead
  		t.zzCurrentPos -= t.zzStartRead
  		t.zzMarkedPos -= t.zzStartRead
  		t.zzStartRead = 0
  	}
  
  	// fill the buffer with new input
  	var requested = len(t.zzBuffer) - t.zzEndRead - t.zzFinalHighSurrogate
  	var totalRead = 0
  	var err error
  	for totalRead < requested && err != io.EOF {
  		var numRead int
  		if numRead, err = readRunes(t.zzReader.(io.RuneReader),
  			t.zzBuffer[t.zzEndRead+totalRead:]); err != nil && err != io.EOF {
  			return false, err
  		}
  		totalRead += numRead
  	}
  
  	if totalRead > 0 {
  		t.zzEndRead += totalRead
  		if totalRead == requested { // possibly more input available
  			panic("niy")
  		}
  		return false, nil
  	}
  
  	assert(totalRead == 0 && err == io.EOF)
  	return true, nil
  }
docs: /* Refills the input buffer. */