Each TextField has a text property that's returned by its textProperty method as a StringProperty. The StringProperty method ________ receives an ObservableValue as an argument. When the ObservableValue changes, the bound property is updated accordingly.

a. join
b. bind
c. attach
d. tie