EsriGraphicList list = null;
        if (shapeType == SHAPE_TYPE_POLYLINE) {
            list = new EsriPolylineList();
        } else if (shapeType == SHAPE_TYPE_POLYGON) {
            list = new EsriPolygonList();
        }
        int numVertices;
        int numShapes = indexData[1].length;
        for (int t = 0; t < numShapes; t++) {
            Integer shpRecordIndex = new Integer(_leis.readInt());
            /* int shpContentLength = */_leis.readInt();
            int shpType = _leis.readLEInt();
            if (shpType != SHAPE_TYPE_NULL) {
                /* double xLeft = */_leis.readLEDouble();
                /* double xBottom = */_leis.readLEDouble();
                /* double xRight = */_leis.readLEDouble();
                /* double xTop = */_leis.readLEDouble();
                int numParts = _leis.readLEInt();
                int numPoints = _leis.readLEInt();
                int[] offsets = new int[numParts];
                // OK, we don't want to create a sublist unless the poly
                // has multiple parts. Remember that. sublist will only
                // be created if there is more than one part.
                for (int n = 0; n < numParts; n++) {
                    offsets[n] = _leis.readLEInt();
                }
                float[] points;
                OMGraphic poly = null;
                EsriGraphicList sublist = null;
                if (numParts > 1) {
                    if (shapeType == SHAPE_TYPE_POLYLINE) {
                        sublist = new EsriPolylineList();
                    } else if (shapeType == SHAPE_TYPE_POLYGON) {
                        sublist = new EsriPolygonList();
                    }
                    sublist.setVague(true); // Treat sublist as one
                    // OMGraphic.
                    sublist.putAttribute(SHAPE_INDEX_ATTRIBUTE,