GSON não chamando meu TypeAdapter para um tipo que é uma interface

O GSON parece estar fazendo algum tipo de truque, quando examina os campos internos dos meus JavaBeans, em vez de usar as informações de propriedade acessíveis publicamente. Infelizmente, isso não vai acontecer porque os nossos beans criados de forma mágica estão cheios de campos privados que eu não quero que sejam armazenados.

@Test
public void testJson() throws Exception
{
    Player player = new MagicPlayer(); //BeanUtils.createDefault(Player.class);
    player.setName("Alice");

    Gson gson = new GsonBuilder()
        .registerTypeAdapter(Player.class, new PlayerTypeAdapter())
        .create();

    System.out.println(gson.toJson(bean));
}

private static class PlayerTypeAdapter implements JsonSerializer<Player>
{
    @Override
    public JsonElement serialize(Player player, Type type,
                                 JsonSerializationContext context)
    {
        throw new RuntimeException("I got called, woohoo");
    }
}

public static interface Player //extends SupportsPropertyChanges
{
    public String getName();
    public void setName(String name);
}

// Simple implementation simulating what we're doing.
public static class MagicPlayer implements Player
{
    private final String privateStuff = "secret";
    private String name;

    @Override
    public String getName()
    {
        return name;
    }

    @Override
    public void setName(String name)
    {
        this.name = name;
    }
}

Isto dá:

{"privateStuff":"secret","name":"Alice"}

E, claro, nunca chama meu adaptador de tipo, o que aparentemente impossibilita qualquer outro comportamento.

questionAnswers(3)

yourAnswerToTheQuestion