func (s *DiffStats) VulnsBNotA() []string {
	return s.bNotA
}
VulnsBNotA returns the vulnerabilities that are A (the first input to Diff) but
are not in B (the second input to Diff).
package cvefeed
import (
	"encoding/json"
	"math/bits"
	"github.com/facebookincubator/nvdtools/cvefeed/nvd"
	"github.com/facebookincubator/nvdtools/cvefeed/nvd/schema"
)
type bag map[string]interface{}
type ChunkKind string
const (
	ChunkDescription ChunkKind = "description"
	ChunkScore = "score"
)
type chunk uint32
const (
	chunkDescriptionShift = iota
	chunkScoreShift
	chunkMaxShift
)
const (
	chunkDescription chunk = 1 << iota
	chunkScore
)
var chunkKind = [chunkMaxShift]ChunkKind{
	ChunkDescription,
	ChunkScore,
}
func (kind ChunkKind) shift() int {
	for i, v := range chunkKind {
		if v == kind {
			return i
		}
	}
	return chunkMaxShift
}
type diffEntry struct {
	id   string
	bits chunk
}
type diffFeed struct {
	name string
	dict Dictionary
}
type diff struct {
	a, b diffFeed
}
func newDiff(a, b diffFeed) *diff {
	return &diff{
		a: a,
		b: b,
	}
}
type DiffStats struct {
	diff *diff  
	numVulnsA, numVulnsB int
	aNotB     []string  
	bNotA     []string  
	entries   []diffEntry
	bitCounts [chunkMaxShift]int
}
func (s *DiffStats) NumVulnsA() int {
	return s.numVulnsA
}
func (s *DiffStats) NumVulnsB() int {
	return s.numVulnsB
}
func (s *DiffStats) VulnsANotB() []string {
	return s.aNotB
}
func (s *DiffStats) NumVulnsANotB() int {
	return len(s.aNotB)
}