func (c Call) GetResponse(args interface{}) (interface{}, error) {
	if c.Response == nil {
		if c.Error == nil {
			panic("Misconfigured call, you must set either Response or Error")
		}
		return nil, c.Error
	}
	if c.Error == nil {
		return c.Response, nil
	}
	if reflect.DeepEqual(args, c.Args) {
		return c.Response, nil
	}
	return nil, c.Error
}
GetResponse will generate the apporiate response for us, when
using the Call struct to configure a Mock handler.

When configuring a response, if only one of Response or Error is
set then that will always be returned. If both are set, then
we return Response if the Args match the set args, Error otherwise.
package mock
import (
	"context"
	"reflect"
	"github.com/tendermint/tendermint/internal/rpc/core"
	"github.com/tendermint/tendermint/libs/bytes"
	"github.com/tendermint/tendermint/rpc/client"
	"github.com/tendermint/tendermint/rpc/coretypes"
	rpctypes "github.com/tendermint/tendermint/rpc/jsonrpc/types"
	"github.com/tendermint/tendermint/types"
)
type Client struct {
	client.Client
	env *core.Environment
}
func New() Client {
	return Client{
		env: &core.Environment{},
	}
}
var _ client.Client = Client{}
type Call struct {
	Name     string
	Args     interface{}
	Response interface{}
	Error    error
}