def filter(self, version=None, pre_release=None, snapshots=None, platform=None):
        versions = self.versions

        if version:
            versions = [v for v in versions if v.version == version]

        if pre_release is True:
            versions = [v for v in versions if v.is_pre_release]

        if pre_release is False:
            versions = [v for v in versions if not v.is_pre_release]

        if snapshots is True:
            versions = [v for v in versions if v.is_snapshot]

        if snapshots is False:
            versions = [v for v in versions if not v.is_snapshot]

        if platform:
            versions = [v for v in versions if v.supports_platform(platform)]

        return VersionManager(versions)