@sachinchitta or @isucan should probably comment on this.  My understanding is that before this conditional was added, kinematics solvers were often specified for joint groups that the solvers could not support, and users would ask why their code crashed or otherwise gave confusing errors.  This was added because at the time, the only existing kinematics solvers required chains.

I think we should still do the checks, but make them more flexible:

KinematicsBase would have a new virtual function like ```bool supportsGroup(JointModelGroup* group)```.  The place here in the code that currently calls ```jmg->isChain()``` would need to instantiate a solver and then call this new function with it.  Important would be to write a default implementation of it which just returns ```group->isChain()``` so that existing kinematics code would continue to work.