public GamebaseError(int code, string domain = null, string message = null, GamebaseError error = null, string transactionId = null)
        {
            this.code   = code;
            this.domain = domain;

            if (string.IsNullOrEmpty(message) == true)
            {
                this.message = RetrieveErrorMessage();
            }
            else
            {
                this.message = message;
            }

            this.transactionId = transactionId;
            this.error         = error;
        }
                public static TransferAccountFailInfo MakeTransferAccountFailInfo(GamebaseError error)
                {
                    if(error == null || error.extras == null)
                    {
                        return null;
                    }

                    if(error.extras.ContainsKey(FAIL_TRANSFER_ACCOUNT) == true)
                    {
                        string jsonString = error.extras[FAIL_TRANSFER_ACCOUNT];

                        if(string.IsNullOrEmpty(jsonString) == true)
                        {
                            return null;
                        }
                        TransferAccountFailInfo transferAccountFailInfo = JsonMapper.ToObject<TransferAccountFailInfo>(jsonString);

                        return transferAccountFailInfo;
                    }

                    return null;
                }
                public static ForcingMappingTicket MakeForcingMappingTicket(GamebaseError error)
                {
                    if (error == null || error.extras == null)
                    {
                        return null;
                    }

                    if (error.extras.ContainsKey(FORCING_MAPPING_TICKET) == true)
                    {
                        string jsonString = error.extras[FORCING_MAPPING_TICKET];

                        if (string.IsNullOrEmpty(jsonString) == true)
                        {
                            return null;
                        }
                        ForcingMappingTicket forcingMappingTicket = JsonMapper.ToObject<ForcingMappingTicket>(jsonString);

                        return forcingMappingTicket;
                    }

                    return null;
                }