func (set *bindingSet) getNode(val *ast.ValueMap) *bindingSetNode { hashCode := val.Hash() for entry := set.table[hashCode]; entry != nil; entry = entry.next { if entry.val.Equal(val) { return entry } } return nil }
func (set *bindingSet) Add(val *ast.ValueMap) { node := set.getNode(val) if node != nil { return } hashCode := val.Hash() head := set.table[hashCode] set.table[hashCode] = &bindingSetNode{val, head} }