func (b GraphSpec) Create(f func(GraphSpec) Graph) Graph {
	return f(b)
}
Specify that the graph is persistent.
TODO Commented out until this actually gets implemented
func (b GraphSpec) Persistent() GraphSpec {
b.Props &^= G_IMMUTABLE
b.Props |= G_PERSISTENT
return b
}
Creates a graph from the spec, using the provided creator function.

This is just a convenience method; the creator function can always
be called directly.
package gogl
type GraphProperties uint16
const (
	G_UNDIRECTED = 1 << iota
	G_DIRECTED
	G_BASIC
	G_LABELED
	G_WEIGHTED
	G_DATA
	G_SIMPLE
	G_LOOPS
	G_PARALLEL
	G_IMMUTABLE
	G_MUTABLE
	G_PERSISTENT = 1<<iota | G_MUTABLE  
)
type GraphSpec struct {
	Props  GraphProperties
	Source GraphSource
}
func Spec() GraphSpec {
	b := GraphSpec{Props: G_UNDIRECTED | G_SIMPLE | G_BASIC | G_MUTABLE}
	return b
}
func (b GraphSpec) Using(g GraphSource) GraphSpec {
	b.Source = g
	return b
}
func (b GraphSpec) Undirected() GraphSpec {
	b.Props &^= G_DIRECTED
	b.Props |= G_UNDIRECTED
	return b
}
func (b GraphSpec) Directed() GraphSpec {
	b.Props &^= G_UNDIRECTED
	b.Props |= G_DIRECTED
	return b
}
func (b GraphSpec) Basic() GraphSpec {
	b.Props &^= G_LABELED | G_WEIGHTED | G_DATA
	b.Props |= G_BASIC
	return b
}
func (b GraphSpec) Labeled() GraphSpec {
	b.Props &^= G_BASIC
	b.Props |= G_LABELED
	return b
}
func (b GraphSpec) Weighted() GraphSpec {
	b.Props &^= G_BASIC
	b.Props |= G_WEIGHTED
	return b
}
func (b GraphSpec) DataEdges() GraphSpec {
	b.Props &^= G_BASIC
	b.Props |= G_DATA
	return b
}
func (b GraphSpec) SimpleGraph() GraphSpec {
	b.Props &^= G_LOOPS | G_PARALLEL
	b.Props |= G_SIMPLE
	return b
}
func (b GraphSpec) MultiGraph() GraphSpec {
	b.Props &^= G_SIMPLE | G_LOOPS
	b.Props |= G_PARALLEL
	return b
}
func (b GraphSpec) PseudoGraph() GraphSpec {
	b.Props &^= G_SIMPLE
	b.Props |= G_LOOPS | G_PARALLEL
	return b
}
func (b GraphSpec) Parallel() GraphSpec {
	b.Props &^= G_SIMPLE
	b.Props |= G_PARALLEL
	return b
}
func (b GraphSpec) Loop() GraphSpec {
	b.Props &^= G_SIMPLE
	b.Props |= G_LOOPS
	return b
}
func (b GraphSpec) Mutable() GraphSpec {
	b.Props &^= G_IMMUTABLE | G_PERSISTENT
	b.Props |= G_MUTABLE
	return b
}
func (b GraphSpec) Immutable() GraphSpec {
	b.Props &^= G_PERSISTENT | G_MUTABLE  
	b.Props |= G_IMMUTABLE
	return b
}