code: func (m ModuleInstance) TargetContains(other Targetable) bool {
  	switch to := other.(type) {
  
  	case ModuleInstance:
  		if len(to) < len(m) {
  			// Can't be contained if the path is shorter
  			return false
  		}
  		// Other is contained if its steps match for the length of our own path.
  		for i, ourStep := range m {
  			otherStep := to[i]
  			if ourStep != otherStep {
  				return false
  			}
  		}
  		// If we fall out here then the prefixed matched, so it's contained.
  		return true
  
  	case AbsResource:
  		return m.TargetContains(to.Module)
  
  	case AbsResourceInstance:
  		return m.TargetContains(to.Module)
  
  	default:
  		return false
  	}
  }
docs: // TargetContains implements Targetable by returning true if the given other
  // address either matches the receiver, is a sub-module-instance of the
  // receiver, or is a targetable absolute address within a module that
  // is contained within the reciever.