Usando Graphics2D para sobrepor texto em uma BufferedImage e retornar uma BufferedImage

Eu verifiquei perguntas com nomes semelhantes, mas elas não respondem a esse caso de uso.

Basicamente, eu deveria sobrepor algum texto (texto) em uma determinada coordenada (x, y); tenho a função abaixo em um pacote;

protected BufferedImage Process2(BufferedImage image){
    Graphics2D gO = image.createGraphics();
    gO.setColor(Color.red);
    gO.setFont(new Font( "SansSerif", Font.BOLD, 12 ));
    gO.drawString(this.text, this.x, this.y);
    System.err.println(this.text+this.x+this.y);
    return image;
}

Sinto que estou perdendo algo óbvio; todas as referências ao Graphics2D que encontro podem ser tratadas com jogos ou gravadas diretamente em um arquivo, mas eu quero apenas uma BufferedImage retornada. com a sobreposição 'renderizada'

No código atual, a imagem aparece no final inalterada.

Obrigado!