func (mn *MeshNode) comparePrev(other *MeshNode) bool {
	if len(mn.Prev) != len(other.Prev) {
		return false
	}
	for _, v1 := range mn.Prev {
		found := false
		for _, v2 := range other.Prev {
			if v1.Id == v2.Id {
				found = true
				break
			}
		}
		if !found {
			return false
		}
	}
	return true
}
comparePrev- Compares Previous nodes if they are equal
package mesh
import (
	"crypto/sha256"
	"fmt"
	"log"
	"os"
	"strconv"
	"github.com/9elements/autorev/tracelog"
	"github.com/emicklei/dot"
	lcs "github.com/yudai/golcs"
)
type MeshNode struct {
	Id uint64
	Propability     uint64
	Next, Prev      []*MeshNode
	Hash            string
	TLE             tracelog.TraceLogEntry
	FirmwareOptions []map[string]uint64
	IsNoop bool
}
type Mesh struct {
	Start MeshNode
	Pathes uint64
	Nodes  []*MeshNode
	ID uint64
}
type Branch Mesh
func lcsMeshNodes(left []*MeshNode, right []*MeshNode) []interface{} {
	var leftIface []interface{} = make([]interface{}, len(left))
	var rightIface []interface{} = make([]interface{}, len(right))
	for i, d := range left {
		leftIface[i] = d.Hash
	}
	for i, d := range right {
		rightIface[i] = d.Hash
	}
	return lcs.New(leftIface, rightIface).Values()
}