public bool Satisfies()

in src/NuGet.Core/NuGet.Versioning/FloatRange.cs [112:191]


        public bool Satisfies(NuGetVersion version)
        {
            if (version == null)
            {
                throw new ArgumentNullException(nameof(version));
            }

            if (_floatBehavior == NuGetVersionFloatBehavior.AbsoluteLatest)
            {
                return true;
            }

            if (_floatBehavior == NuGetVersionFloatBehavior.Major
                && !version.IsPrerelease)
            {
                return true;
            }

            if (IncludePrerelease)
            {
                // everything beyond this point requires a version
                if (_floatBehavior == NuGetVersionFloatBehavior.PrereleaseRevision)
                {
                    // allow the stable version to match
                    return _minVersion.Major == version.Major
                        && _minVersion.Minor == version.Minor
                        && _minVersion.Patch == version.Patch
                        && ((version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
                            || !version.IsPrerelease);
                }
                else if (_floatBehavior == NuGetVersionFloatBehavior.PrereleasePatch)
                {
                    // allow the stable version to match
                    return _minVersion.Major == version.Major
                        && _minVersion.Minor == version.Minor
                        && ((version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
                            || !version.IsPrerelease);
                }
                else if (FloatBehavior == NuGetVersionFloatBehavior.PrereleaseMinor)
                {
                    // allow the stable version to match
                    return _minVersion.Major == version.Major
                        && ((version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
                            || !version.IsPrerelease);
                }
                else if (FloatBehavior == NuGetVersionFloatBehavior.PrereleaseMajor)
                {
                    // allow the stable version to match
                    return (version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
                            || !version.IsPrerelease;
                }
                else if (_floatBehavior == NuGetVersionFloatBehavior.Prerelease)
                {
                    // allow the stable version to match
                    return VersionComparer.Version.Equals(_minVersion, version)
                            && ((version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
                                || !version.IsPrerelease);
                }
            }
            else if (_floatBehavior == NuGetVersionFloatBehavior.Revision)
            {
                return _minVersion.Major == version.Major
                        && _minVersion.Minor == version.Minor
                        && _minVersion.Patch == version.Patch
                        && !version.IsPrerelease;
            }
            else if (_floatBehavior == NuGetVersionFloatBehavior.Patch)
            {
                return _minVersion.Major == version.Major
                        && _minVersion.Minor == version.Minor
                        && !version.IsPrerelease;
            }
            else if (_floatBehavior == NuGetVersionFloatBehavior.Minor)
            {
                return _minVersion.Major == version.Major
                        && !version.IsPrerelease;
            }

            return false;
        }