protected Vector2 ApplySeparation(AIAgent requester, Vector2 requesterPosition, Vector2 currentDesiredPostion, bool linearWeight)
    {
        Vector2?localSepTemp = SteeringBehaviour.Separation(requester, requesterPosition,
                                                            (currentDesiredPostion - requesterPosition).normalized, out AIAgent closestSiblin, out Vector2 directionToclosestSiblin);

        if (UseLocalSeparation(requester, localSepTemp, directionToclosestSiblin, currentDesiredPostion, requester.data.separationIgnoreBiggerAngles, requester.data.separationIgnoreSmallerAngles))
        {
            float multiplier = requester.data.separationWieghtMultiplier;
            currentDesiredPostion = Vector2.Lerp(currentDesiredPostion, localSepTemp.Value,
                                                 GetSeparationWeight(requester, closestSiblin, linearWeight) * multiplier);
        }

        return(currentDesiredPostion);
    }