class VirtualTerminalTextGraphics extends AbstractTextGraphics {
    private final DefaultVirtualTerminal virtualTerminal;

    VirtualTerminalTextGraphics(DefaultVirtualTerminal virtualTerminal) {
        this.virtualTerminal = virtualTerminal;
    }

    @Override
    public TextGraphics setCharacter(int columnIndex, int rowIndex, TextCharacter textCharacter) {<FILL_FUNCTION_BODY>}

    @Override
    public TextCharacter getCharacter(TerminalPosition position) {
        return virtualTerminal.getCharacter(position);
    }

    @Override
    public TextCharacter getCharacter(int column, int row) {
        return getCharacter(new TerminalPosition(column, row));
    }

    @Override
    public TerminalSize getSize() {
        return virtualTerminal.getTerminalSize();
    }
}

        TerminalSize size = getSize();
        if(columnIndex < 0 || columnIndex >= size.getColumns() ||
                rowIndex < 0 || rowIndex >= size.getRows()) {
            return this;
        }
        synchronized(virtualTerminal) {
            virtualTerminal.setCursorPosition(new TerminalPosition(columnIndex, rowIndex));
            virtualTerminal.putCharacter(textCharacter);
        }
        return this;
    
<methods>public com.googlecode.lanterna.graphics.TextGraphics clearModifiers() ,public transient com.googlecode.lanterna.graphics.TextGraphics disableModifiers(com.googlecode.lanterna.SGR[]) ,public com.googlecode.lanterna.graphics.TextGraphics drawImage(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.graphics.TextImage) ,public com.googlecode.lanterna.graphics.TextGraphics drawImage(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.graphics.TextImage, com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalSize) ,public com.googlecode.lanterna.graphics.TextGraphics drawLine(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalPosition, char) ,public com.googlecode.lanterna.graphics.TextGraphics drawLine(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TextCharacter) ,public com.googlecode.lanterna.graphics.TextGraphics drawLine(int, int, int, int, char) ,public com.googlecode.lanterna.graphics.TextGraphics drawLine(int, int, int, int, com.googlecode.lanterna.TextCharacter) ,public com.googlecode.lanterna.graphics.TextGraphics drawRectangle(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalSize, char) ,public com.googlecode.lanterna.graphics.TextGraphics drawRectangle(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalSize, com.googlecode.lanterna.TextCharacter) ,public com.googlecode.lanterna.graphics.TextGraphics drawTriangle(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalPosition, char) ,public com.googlecode.lanterna.graphics.TextGraphics drawTriangle(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TextCharacter) ,public transient com.googlecode.lanterna.graphics.TextGraphics enableModifiers(com.googlecode.lanterna.SGR[]) ,public com.googlecode.lanterna.graphics.TextGraphics fill(char) ,public com.googlecode.lanterna.graphics.TextGraphics fillRectangle(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalSize, char) ,public com.googlecode.lanterna.graphics.TextGraphics fillRectangle(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalSize, com.googlecode.lanterna.TextCharacter) ,public com.googlecode.lanterna.graphics.TextGraphics fillTriangle(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalPosition, char) ,public com.googlecode.lanterna.graphics.TextGraphics fillTriangle(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TextCharacter) ,public EnumSet<com.googlecode.lanterna.SGR> getActiveModifiers() ,public com.googlecode.lanterna.TextColor getBackgroundColor() ,public com.googlecode.lanterna.TextCharacter getCharacter(com.googlecode.lanterna.TerminalPosition) ,public com.googlecode.lanterna.TextColor getForegroundColor() ,public com.googlecode.lanterna.screen.TabBehaviour getTabBehaviour() ,public com.googlecode.lanterna.graphics.TextGraphics newTextGraphics(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TerminalSize) throws java.lang.IllegalArgumentException,public synchronized com.googlecode.lanterna.graphics.TextGraphics putCSIStyledString(int, int, java.lang.String) ,public com.googlecode.lanterna.graphics.TextGraphics putCSIStyledString(com.googlecode.lanterna.TerminalPosition, java.lang.String) ,public com.googlecode.lanterna.graphics.TextGraphics putString(int, int, java.lang.String) ,public com.googlecode.lanterna.graphics.TextGraphics putString(com.googlecode.lanterna.TerminalPosition, java.lang.String) ,public transient com.googlecode.lanterna.graphics.TextGraphics putString(int, int, java.lang.String, com.googlecode.lanterna.SGR, com.googlecode.lanterna.SGR[]) ,public com.googlecode.lanterna.graphics.TextGraphics putString(int, int, java.lang.String, Collection<com.googlecode.lanterna.SGR>) ,public transient com.googlecode.lanterna.graphics.TextGraphics putString(com.googlecode.lanterna.TerminalPosition, java.lang.String, com.googlecode.lanterna.SGR, com.googlecode.lanterna.SGR[]) ,public com.googlecode.lanterna.graphics.TextGraphics setBackgroundColor(com.googlecode.lanterna.TextColor) ,public com.googlecode.lanterna.graphics.TextGraphics setCharacter(int, int, char) ,public com.googlecode.lanterna.graphics.TextGraphics setCharacter(com.googlecode.lanterna.TerminalPosition, com.googlecode.lanterna.TextCharacter) ,public com.googlecode.lanterna.graphics.TextGraphics setCharacter(com.googlecode.lanterna.TerminalPosition, char) ,public com.googlecode.lanterna.graphics.TextGraphics setForegroundColor(com.googlecode.lanterna.TextColor) ,public synchronized com.googlecode.lanterna.graphics.TextGraphics setModifiers(EnumSet<com.googlecode.lanterna.SGR>) ,public com.googlecode.lanterna.graphics.TextGraphics setStyleFrom(StyleSet<?>) ,public com.googlecode.lanterna.graphics.TextGraphics setTabBehaviour(com.googlecode.lanterna.screen.TabBehaviour) <variables>protected final non-sealed EnumSet<com.googlecode.lanterna.SGR> activeModifiers,protected com.googlecode.lanterna.TextColor backgroundColor,protected com.googlecode.lanterna.TextColor foregroundColor,private final non-sealed com.googlecode.lanterna.graphics.ShapeRenderer shapeRenderer,protected com.googlecode.lanterna.screen.TabBehaviour tabBehaviour