public AlongDirectionSemplificationCheckResult Check(ImplicitToolBase tool)
        {
            var result = AlongDirectionSemplificationCheckResult.None;

            if (IsComparable(tool))
            {
                var d = tool._position - _position;
                var p = CheckParallel(d);

                if (p > 0)
                {
                    result = AlongDirectionSemplificationCheckResult.GoOn;
                }
                else if (p < 0)
                {
                    result = AlongDirectionSemplificationCheckResult.BackOff;
                }
            }

            return(result);
        }
 protected abstract bool IsComparable(ImplicitToolBase tool);