code: public <T> Subscription bind(
              Property<T> target,
              ObservableValue<? extends T> source) {
          return bind(() -> {
              target.bind(source);
              return target::unbind;
          });
      }
docs: Sets up automatic binding and unbinding of {@code target} to/from
  {@code source}, based on the changing value of the encapsulated
  condition. In other words, whenever the encapsulated condition is
  {@code true}, {@code target} is bound to {@code source}. Whenever the
  encapsulated condition is {@code false}, {@code target} is unbound.
  This keeps happening until {@code unsubscribe()} is called on the
  returned subscription. Unsubscribing the returned subscription may be
  skipped safely only when the lifetimes of all the encapsulated condition,
  {@code source} and {@code target} are the same.
  @param target target of the conditional binding
  @param source source of the conditional binding
  @return a subscription that can be used to dispose the conditional
  binding set up by this method, i.e. to stop observing the encapsulated
  condition and, if the last observed value of the encapsulated condition
  was {@code true}, unbind {@code target} from {@code source}.