¿Cómo funciona JavaBeans Property Adapter?

Lo que estoy intentando hacer funciona bien si sigo la definición de propiedad de JavaFX descritaaquí. Ahora, en cambio, quiero definir las propiedades de los objetos de Java Beans utilizando el Adaptador de propiedades de Java Beans. Como no hay documentación, no puedo entender cómo funciona.

Supongamos que tengo una clase simple de POJO:

public class Person {
    private String name;

    public String getName() {
        return name;
    }

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

y una propiedad privada:

public class PersonProperty {
    private Person person = new Person();

    private JavaBeanStringProperty name;

    public PersonProperty() throws NoSuchMethodException {
        name = JavaBeanStringPropertyBuilder.create().bean( person ).name( "name" ).build();
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson( Person person ) {
        this.person = person;
    }

    public JavaBeanStringProperty nameProperty() {
        return name;
    }
}

y finalmente una prueba:

public void personTest() throws NoSuchMethodException {
    PersonProperty pp = new PersonProperty();

    pp.getPerson().setName( "A" );
    pp.getPerson().setName( "B" );

    pp.nameProperty().addListener( new ChangeListener<String>() {
        @Override
        public void changed( ObservableValue<? extends String> ov, String t, String t1 ) {
            System.out.println( "from " + t + " to " + t1 );
        }
    } );

    pp.getPerson().setName( "C" );
    pp.getPerson().setName( "D" );
}

Estoy esperando a ver:

from B to C
from C to D

En cambio, nada aparece.

Si agregopp.nameProperty().set("E") al final de personTest obtengofrom B to E

Respuestas a la pregunta(1)

Su respuesta a la pregunta