code: func newInternal(exec utilexec.Interface, dbus utildbus.Interface, protocol Protocol, lockfilePath string) Interface {
  	vstring, err := getIPTablesVersionString(exec, protocol)
  	if err != nil {
  		klog.Warningf("Error checking iptables version, assuming version at least %s: %v", MinCheckVersion, err)
  		vstring = MinCheckVersion
  	}
  
  	if lockfilePath == "" {
  		lockfilePath = LockfilePath16x
  	}
  
  	runner := &runner{
  		exec:            exec,
  		dbus:            dbus,
  		protocol:        protocol,
  		hasCheck:        getIPTablesHasCheckCommand(vstring),
  		hasListener:     false,
  		waitFlag:        getIPTablesWaitFlag(vstring),
  		restoreWaitFlag: getIPTablesRestoreWaitFlag(exec, protocol),
  		lockfilePath:    lockfilePath,
  	}
  	return runner
  }
docs: // newInternal returns a new Interface which will exec iptables, and allows the
  // caller to change the iptables-restore lockfile path