func (w *GovernmentContractWatchers) StartGovernmentContractWatchers(client bind.ContractBackend,
	eventRecvChan chan *model.Event, errs chan error) ([]utils.WatcherSubscription, error) {
	w.errors = errs
	contract, err := contract.NewGovernmentContract(w.contractAddress, client)
	if err != nil {
		log.Errorf("Error initializing StartGovernmentContract: err: %v", err)
		return nil, errors.Wrap(err, "error initializing StartGovernmentContract")
	}
	w.contract = contract
	var sub utils.WatcherSubscription
	subs := []utils.WatcherSubscription{}
	if specs.IsListenerEnabledForEvent("GovernmentContract", "AppellateSet") {
		sub, err = w.startWatchAppellateSet(eventRecvChan)
		if err != nil {
			return nil, errors.WithMessage(err, "error starting startAppellateSet")
		}
		subs = append(subs, sub)
	}
	if specs.IsListenerEnabledForEvent("GovernmentContract", "GovtReparameterizationProposal") {
		sub, err = w.startWatchGovtReparameterizationProposal(eventRecvChan)
		if err != nil {
			return nil, errors.WithMessage(err, "error starting startGovtReparameterizationProposal")
		}
		subs = append(subs, sub)
	}
	if specs.IsListenerEnabledForEvent("GovernmentContract", "NewConstSet") {
		sub, err = w.startWatchNewConstSet(eventRecvChan)
		if err != nil {
			return nil, errors.WithMessage(err, "error starting startNewConstSet")
		}
		subs = append(subs, sub)
	}
	if specs.IsListenerEnabledForEvent("GovernmentContract", "ParameterSet") {
		sub, err = w.startWatchParameterSet(eventRecvChan)
		if err != nil {
			return nil, errors.WithMessage(err, "error starting startParameterSet")
		}
		subs = append(subs, sub)
	}
	if specs.IsListenerEnabledForEvent("GovernmentContract", "ProposalExpired") {
		sub, err = w.startWatchProposalExpired(eventRecvChan)
		if err != nil {
			return nil, errors.WithMessage(err, "error starting startProposalExpired")
		}
		subs = append(subs, sub)
	}
	if specs.IsListenerEnabledForEvent("GovernmentContract", "ProposalFailed") {
		sub, err = w.startWatchProposalFailed(eventRecvChan)
		if err != nil {
			return nil, errors.WithMessage(err, "error starting startProposalFailed")
		}
		subs = append(subs, sub)
	}
	if specs.IsListenerEnabledForEvent("GovernmentContract", "ProposalPassed") {
		sub, err = w.startWatchProposalPassed(eventRecvChan)
		if err != nil {
			return nil, errors.WithMessage(err, "error starting startProposalPassed")
		}
		subs = append(subs, sub)
	}
	w.activeSubs = subs
	return subs, nil
}
StartGovernmentContractWatchers starts up the event watchers for GovernmentContract
package watcher
import (
	"context"
	"time"
	"github.com/davecgh/go-spew/spew"
	log "github.com/golang/glog"
	"github.com/pkg/errors"
	"github.com/ethereum/go-ethereum/accounts/abi/bind"
	"github.com/ethereum/go-ethereum/common"
	specs "github.com/joincivil/civil-events-crawler/pkg/contractspecs"
	"github.com/joincivil/civil-events-crawler/pkg/model"
	"github.com/joincivil/civil-events-crawler/pkg/utils"
	"github.com/joincivil/go-common/pkg/generated/contract"
	ctime "github.com/joincivil/go-common/pkg/time"
)
func NewGovernmentContractWatchers(contractAddress common.Address) *GovernmentContractWatchers {
	return &GovernmentContractWatchers{
		contractAddress: contractAddress,
	}
}
type GovernmentContractWatchers struct {
	errors          chan error
	contractAddress common.Address
	contract        *contract.GovernmentContract
	activeSubs      []utils.WatcherSubscription
}
func (w *GovernmentContractWatchers) ContractAddress() common.Address {
	return w.contractAddress
}
func (w *GovernmentContractWatchers) ContractName() string {
	return "GovernmentContract"
}
func (w *GovernmentContractWatchers) cancelFunc(cancelFn context.CancelFunc, killCancel <-chan struct{}) {
}
func (w *GovernmentContractWatchers) StopWatchers(unsub bool) error {
	if unsub {
		for _, sub := range w.activeSubs {
			sub.Unsubscribe()
		}
	}
	w.activeSubs = nil
	w.contract = nil
	return nil
}
func (w *GovernmentContractWatchers) StartWatchers(client bind.ContractBackend,
	eventRecvChan chan *model.Event, errs chan error) ([]utils.WatcherSubscription, error) {
	return w.StartGovernmentContractWatchers(client, eventRecvChan, errs)
}