This should not be a loop. And the complexity should be hidden in a getPreTruncateTable() accessor. In that accessor, if the table's back-pointer is non-null, return the back-pointer (maybe assert that the back-pointer's back-pointer is null) otherwise return the table (this).