void ProcessData(byte[] data, EndPoint sender)
    {
        try {
            NetworkPackage package = NetworkPackage.Deserialize(data);
            package.sender = sender;
            if (package.isImportant)
            {
                throw new System.NotImplementedException();

                /*if (package.packageID >= freePackageID) {
                 *  freePackageID = package.packageID + 1;
                 *  OnRecieveData(package, sender);
                 * }
                 * NetworkPackage confirm = new NetworkPackage() {
                 *  packageID = package.packageID,
                 *  packageType = NetworkDataType.Confirm,
                 *  isImportant = false
                 * };
                 * SendTo(confirm, sender);*/
            }
            else
            {
                RecieveData(package);
            }
        }
        catch (Exception e) {
            Debug.Log(e);
            Debug.Log(e.StackTrace);
            Debug.Log(e.Message);
        }
    }