Why does JavaFX table.getItems().clear() clear the ObservableList as well
<p>I've a JavaFX table defined as:</p>

<pre><code>TableView&lt;Person&gt; table = new TableView&lt;&gt;;
//Person Class contains firstName,lastName &amp; email properties
//table has three columns First Name, Last Name &amp; Email
</code></pre>

<p>An <code>ObservableList</code> of <code>Person</code>s</p>

<pre><code>ObservableList&lt;Person&gt; persons = FXCollections.observableArrayList();
</code></pre>

<p>A background service, which task is to populate the table dynamically by adding entries(<code>Person</code> objects) to the <code>ObservableList persons</code>.</p>

<p>table is binded as:</p>

<pre><code>table.itemsProperty().bind(service.valueProperty());
</code></pre>

<p>Everything is working fine... but I've recently found that if I clear the table items by</p>

<pre><code>table.getItems().clear();
</code></pre>

<p>It does not only clears the table, but also the <code>ObservableList persons</code>. I'm wondering if this a bidirectional binding?
Even if I unbind it before calling <code>getItems().clear()</code> on the table, it produces same result.
Could someone explain what the point I'm not getting here?</p>