class HproseSerialization implements Serialization {

    @Override
    public byte[] serialize(Object data) throws IOException {
        ByteBufferStream stream = null;
        try {
            stream = new ByteBufferStream();
            HproseWriter writer = new HproseWriter(stream.getOutputStream());
            writer.serialize(data);
            byte[] result = stream.toArray();
            return result;
        }
        finally {
            if (stream != null) {
                stream.close();
            }
        }
    }

    @SuppressWarnings("unchecked")
    @Override
    public <T> T deserialize(byte[] data, Class<T> clz) throws IOException {
        return new HproseReader(data).unserialize(clz);
    }

    @Override
    public byte[] serializeMulti(Object[] data) throws IOException {<FILL_FUNCTION_BODY>}

    @Override
    public Object[] deserializeMulti(byte[] data, Class<?>[] classes) throws IOException {
        HproseReader reader = new HproseReader(data);
        Object[] objects = new Object[classes.length];
        for (int i = 0; i < classes.length; i++){
            objects[i] = reader.unserialize(classes[i]);
        }
        return objects;
    }

    @Override
    public int getSerializationNumber() {
        return 4;
    }
}

        ByteBufferStream stream = null;
        try {
            stream = new ByteBufferStream();
            HproseWriter writer = new HproseWriter(stream.getOutputStream());
            for (Object o : data) {
                writer.serialize(o);
            }
            byte[] result = stream.toArray();
            return result;
        } finally {
            if (stream != null) {
                stream.close();
            }
        }
    
<no_super_class>