func (t Term) Unpack() (coeffID, variableID int, variableVisiblity Visibility) {
	coeffID = t.CoeffID()
	variableID = t.VariableID()
	variableVisiblity = t.VariableVisibility()
	return
}
Unpack returns coeffID, variableID and visibility
package compiled
import (
	"math/big"
	"strconv"
	"strings"
)
type Term uint64
const (
	CoeffIdZero     = 0
	CoeffIdOne      = 1
	CoeffIdTwo      = 2
	CoeffIdMinusOne = 3
)
const (
	_                uint64 = 0b000
	variablePublic   uint64 = 0b001
	variableSecret   uint64 = 0b010
	variableInternal uint64 = 0b011
	variableVirtual  uint64 = 0b100
)
const (
	nbBitsVariableID         = 29
	nbBitsCoeffID            = 30
	nbBitsDelimitor          = 1
	nbBitsFutureUse          = 1
	nbBitsVariableVisibility = 3
)
const TermDelimitor Term = Term(maskDelimitor)
const (
	shiftVariableID         = 0
	shiftCoeffID            = nbBitsVariableID
	shiftDelimitor          = shiftCoeffID + nbBitsCoeffID
	shiftFutureUse          = shiftDelimitor + nbBitsDelimitor
	shiftVariableVisibility = shiftFutureUse + nbBitsFutureUse
)
const (
	maskVariableID         = uint64((1 << nbBitsVariableID) - 1)
	maskCoeffID            = uint64((1<<nbBitsCoeffID)-1) << shiftCoeffID
	maskDelimitor          = uint64((1<<nbBitsDelimitor)-1) << shiftDelimitor
	maskFutureUse          = uint64((1<<nbBitsFutureUse)-1) << shiftFutureUse
	maskVariableVisibility = uint64((1<<nbBitsVariableVisibility)-1) << shiftVariableVisibility
)
func Pack(variableID, coeffID int, variableVisiblity Visibility) Term {
	var t Term
	t.SetVariableID(variableID)
	t.SetCoeffID(coeffID)
	t.SetVariableVisibility(variableVisiblity)
	return t
}