@Override
    public int sizeOf( Collection<?> v )
    {
        if (v == null)
        {
            return 1;
        }

        int size = Compress.sizeOfUnsignedNullable( v.size() );

        for (Object o : v)
        {
            if (o != null)
            {
                Reflect<Object> r = ReflectFactory.create( o.getClass() );

                if (r == null)
                {
                    throw new RuntimeException( "A Reflect implementation doesn't exist for the given type: " + o.getClass() );
                }

                size += r.sizeOf( o );
            }
            else
            {
                size++;
            }
        }

        return size;
    }