public static int populateObjects(byte[] data, int offset, List dsftBinSpriteSetList, int entryCount, Class dsftBinSpriteClass)
    {
        Number recordSizeNumber = null;
        try
        {
            Method getStaticRecordSizeMethod = dsftBinSpriteClass.getMethod("getStaticRecordSize", null);
            recordSizeNumber = (Number)getStaticRecordSizeMethod.invoke(dsftBinSpriteClass, null);
        }
        catch (SecurityException exception)
        {
            throw new RuntimeException(exception);
        }
        catch (NoSuchMethodException exception)
        {
            throw new RuntimeException(exception);
        }
        catch (IllegalArgumentException exception)
        {
            throw new RuntimeException(exception);
        }
        catch (IllegalAccessException exception)
        {
            throw new RuntimeException(exception);
        }
        catch (InvocationTargetException exception)
        {
            throw new RuntimeException(exception);
        }

        int dsftEntryCount = 0;
        int endOfData = (8 + (entryCount * recordSizeNumber.intValue()));
        while(offset < endOfData)
        {
            DsftBinSpriteSet dsftBinSpriteSet = new DsftBinSpriteSet(dsftBinSpriteClass);
            
            offset = dsftBinSpriteSet.initialize(data, offset);
            
            dsftBinSpriteSetList.add(dsftBinSpriteSet);
            
            dsftEntryCount += dsftBinSpriteSet.getDsftBinSpriteArray().length;
        }
        
        return offset;
    }