public static void RegisterRemote(BaseRemote remote, string name, RemoteNameFunc remoteNameFunc) // TODO remote function name func
        {
            Dictionary <string, RemoteMethod> m = remote.GetRemotesMap();

            foreach (KeyValuePair <string, RemoteMethod> kvp in m)
            {
                var rn         = remoteNameFunc(kvp.Key);
                var remoteName = $"{name}.{rn}";
                if (RemotesDict.ContainsKey(remoteName))
                {
                    throw new PitayaException($"tried to register same remote twice! remote name: {remoteName}");
                }

                Logger.Info("registering remote {0}", remoteName);
                RemotesDict[remoteName] = kvp.Value;
            }
        }
 public static void RegisterRemote(BaseRemote remote, string name)
 {
     RegisterRemote(remote, name, DefaultRemoteNameFunc);
 }
        public static void RegisterRemote(BaseRemote remote)
        {
            string className = DefaultRemoteNameFunc(remote.GetName());

            RegisterRemote(remote, className, DefaultRemoteNameFunc);
        }