code: int at(int n) throws
        IOException
    {
      Mark mark = mark();
      List<Integer> cbuf = Lists.newArrayList();
      for (int i = 0; i < n; i++)
      {
        cbuf.add(next());
        if (curChar == -1)
        {
          break;
        }
      }
      unread(cbuf, mark);
      return cbuf.get(cbuf.size() - 1);
    }
docs: Peek and return the character at position n from current position, or -1
  if EOF is reached before or at that position.