private static JointBasics cloneJoint(JointReadOnly original, String cloneSuffix, RigidBodyBasics clonePredecessor, boolean testIfPredecessorIsRoot, JointBuilder jointBuilder) { if (jointBuilder == null) jointBuilder = DEFAULT_JOINT_BUILDER; if (original instanceof OneDoFJointReadOnly) return cloneOneDoFJoint((OneDoFJointReadOnly) original, cloneSuffix, clonePredecessor, jointBuilder); else if (original instanceof SixDoFJointReadOnly) return cloneSixDoFJoint((SixDoFJointReadOnly) original, cloneSuffix, clonePredecessor, jointBuilder); else if (original instanceof PlanarJointReadOnly) return clonePlanarJoint((PlanarJointReadOnly) original, cloneSuffix, clonePredecessor, jointBuilder); else if (original instanceof SphericalJointReadOnly) return cloneSphericalJoint((SphericalJointReadOnly) original, cloneSuffix, clonePredecessor, jointBuilder); else if (original instanceof FixedJointReadOnly) return cloneFixedJoint((FixedJointReadOnly) original, cloneSuffix, clonePredecessor, jointBuilder); else throw new UnsupportedOperationException("Unhandled joint type: " + original.getClass().getName()); }