class TabReader implements Iterator<StringPair> {

    @Override
    public boolean hasNext() { 
      return nextLine != null;
    }

    @Override
    public StringPair next() {<FILL_FUNCTION_BODY>}

    // The file is read-only.
    @Override
    public void remove() { 
      throw new UnsupportedOperationException(); 
    }
  }

      try {
        StringPair result = nextPair;
        sentencePos = nextPair.getSource().length() + 1;
        if (nextLine != null) {
          prevLine = nextLine;
          nextLine = in.readLine();
          nextPair = tab2StringPair(nextLine);
          lineCount++;
          if (nextLine == null) {
            in.close();
          }
        }
        return result;
      } catch (IOException e) { 
        throw new RuntimeException(e); 
      }
    
<no_super_class>