protected OgexSkin toSkin( DataStructure ds, Map<BaseStructure, Object> index ) {
        OgexSkin result = new OgexSkin();
 
        for( BaseStructure child : ds ) {
            if( StructTypes.TRANSFORM.equals(child.getType()) ) {
                result.setTransform(toTransform((DataStructure)child, index));
            } else if( StructTypes.SKELETON.equals(child.getType()) ) {
                result.setSkeleton(toSkeleton((DataStructure)child, index));
            } else if( StructTypes.BONE_COUNT_ARRAY.equals(child.getType()) ) {
                result.setBoneCount(new IntArray(child.getData()));
            } else if( StructTypes.BONE_INDEX_ARRAY.equals(child.getType()) ) {
                result.setBoneIndex(new IntArray(child.getData()));
            } else if( StructTypes.BONE_WEIGHT_ARRAY.equals(child.getType()) ) {                
                result.setBoneWeight((float[])child.getData());
            } else {
                log.warn("Unhandled structure type:" + child.getType() + ", from:" + child.location());
            }
        }
        
        return result;
    }