class JacksonUniqueIdGenerator extends ObjectIdGenerator<String> {

    private final Class<?> scope;

    public JacksonUniqueIdGenerator() {
        this.scope = Object.class;
    }

    @Override
    public Class<?> getScope() {
        return scope;
    }

    @Override
    public boolean canUseFor(ObjectIdGenerator<?> gen) {
        return (gen.getClass() == getClass());
    }

    @Override
    public ObjectIdGenerator<String> forScope(Class<?> scope) {
        return this;
    }

    @Override
    public ObjectIdGenerator<String> newForSerialization(Object context) {
        return this;
    }

    @Override
    public IdKey key(Object key) {<FILL_FUNCTION_BODY>}

    @Override
    public String generateId(Object forPojo) {
        return forPojo.getClass().getSimpleName() + "#" + ((AbstractPersistable) forPojo).getId();
    }
}

        if (key == null) {
            return null;
        }
        return new IdKey(getClass(), null, key);
    
<no_super_class>