It's not true that
dnConstrainedTopology requires FBD as the base distribution; it's actually supposed to be very general. For unrooted (nonclock) trees, it's supposed to work with any base distribution that can be cast to (= is derived from)
UniformTopologyBranchLengthDistribution – and it sort of does, except that you might have to provide your own initial tree (which itself has to satisfy the backbone constraint, of course) to get the analysis started. See
issue #384 in the GitHub repo. For rooted (clock) trees, it will work with any base distribution that can be cast to
AbstractRootedTreeDistribution, which would be true of most flavors of the birth-death process. Even for a distribution like
dnUniformTimeTree, which is not derived from
AbstractRootedTreeDistribution, it's still possible to make it work if you supply your own starting tree. See
issue #512 in the GitHub repo. I think the only base distributions that are currently known
not to work with
dnConstrainedTopology are
dnCDBDP and
dnGLHBDSP – see
issue #375 in the GitHub repo.