code: func (m ModuleInstance) IsAncestor(o ModuleInstance) bool {
  	// Longer or equal sized paths means the receiver cannot
  	// be an ancestor of the given module insatnce.
  	if len(m) >= len(o) {
  		return false
  	}
  
  	for i, ms := range m {
  		if ms.Name != o[i].Name {
  			return false
  		}
  		if ms.InstanceKey != NoKey && ms.InstanceKey != o[i].InstanceKey {
  			return false
  		}
  	}
  
  	return true
  }
docs: // IsAncestor returns true if the receiver is an ancestor of the given
  // other value.