class ValuesMap implements MutableLongObjectMap<Value> {

    @Override
    public <P> Value getIfAbsentPutWith( long key, Function<? super P, ? extends Value> function, P parameter )
    {
        final Value existing = get( key );
        if ( existing != null )
        {
            return existing;
        }
        final Value value = function.valueOf( parameter );
        put( key, value );
        return value;
    }

    public  ValuesMap( MutableLongLongMap refs, ValuesContainer valuesContainer );

}