@Override
    @SuppressWarnings("unchecked")
    public void read(JmeImporter im) throws IOException {
        InputCapsule input = im.getCapsule(this);

        name = input.readString("name", null);
        attachedNode = (Node) input.readSavable("attachedNode", null);
        targetGeometry = (Geometry) input.readSavable("targetGeometry", null);
        initialTransform = (Transform) input.readSavable("initialTransform", new Transform());
        inverseModelBindMatrix = (Matrix4f) input.readSavable("inverseModelBindMatrix", inverseModelBindMatrix);

        ArrayList<Joint> childList = input.readSavableArrayList("children", null);
        for (int i = childList.size() - 1; i >= 0; i--) {
            this.addChild(childList.get(i));
        }
    }
De-serialize this Joint from the specified importer, for example when
loading from a J3O file.

@param im the importer to use (not null)
@throws IOException from the importer
jme3-core/src/main/java/com/jme3/anim/Joint.java