@SuppressWarnings({ "unchecked", "rawtypes" })
    @Override
    public Object instantiate( ObjectBinder context, Object value, Type targetType, Class targetClass )
    {
        if( value instanceof Map && targetClass == User.class )
        {
            Map<String, ?> map = (Map<String, ?>) value;
            User u = new User();
            u.name = stringVal( map.get( "username" ) );
            u.mail = stringVal( map.get( "mail" ) );
            u.friendsCount = 0;
            u.bwAvailLastMonth = 0L;
            u.sharedSpace = 0L;
            u.sharedItems = 0L;
            Map<String, ?> mapDisk = (Map<String, ?>) map.get( "disk" );
            u.diskQuota = longVal( mapDisk.get( "size" ) );
            u.diskQuotaAvailable = longVal( mapDisk.get( "avail" ) );
            u.bwQuota = longVal( mapDisk.get( "used" ) );
            return u;
        }
        throw context.cannotConvertValueToTargetType( value, targetClass );
    }