public CodePoint next() {
            if(program.text.codePointAt(index) == '\n')
            {
                ++line;
                position = 0;
            }
            ++position;
            index = program.text.offsetByCodePoints(index, 1);
            
            current.setValue(program.text.codePointAt(index));
            current.setPosition(new Position(line, position, index));

            return current;
        }