protected OgexLightNode toLightNode( DataStructure ds, Map<BaseStructure, Object> index ) {
        OgexLightNode result = new OgexLightNode();
        configureNode(result, ds, index, false);
        
        result.setShadow((Boolean)ds.getProperty("shadow"));
 
        OgexLightObject light = null;       
        for( BaseStructure child : ds ) {
            String type = child.getType();
            if( BASE_NODE_CHILDREN.contains(type) ) {
                continue;
            } else if( StructTypes.OBJECT_REF.equals(type) ) {
                if( light != null ) {
                    throw new RuntimeException("Too many ObjectRef structures found in LightNode, from:" + child.location());
                }
                BaseStructure[] array = (BaseStructure[])child.getData();
                if( array.length != 1 ) {
                    throw new RuntimeException("Too many references (" + array.length + ") found in LightNode ObjectRef, from:" + child.location());
                }
                light = toLight((DataStructure)array[0], index);
            } else {
                log.warn("Unhandled structure type:" + child.getType() + ", from:" + child.location());
            }
        }
        result.setLight(light);
        
        return result;                
    }