func (c *EchoClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) {
	return c.internalClient.GetLocation(ctx, req, opts...)
}
GetLocation is a utility method from google.cloud.location.Locations.
package client
import (
	"context"
	"math"
	"sort"
	"time"
	"cloud.google.com/go/longrunning"
	lroauto "cloud.google.com/go/longrunning/autogen"
	genprotopb "github.com/googleapis/gapic-showcase/server/genproto"
	gax "github.com/googleapis/gax-go/v2"
	"google.golang.org/api/iterator"
	"google.golang.org/api/option"
	"google.golang.org/api/option/internaloption"
	gtransport "google.golang.org/api/transport/grpc"
	locationpb "google.golang.org/genproto/googleapis/cloud/location"
	iampb "google.golang.org/genproto/googleapis/iam/v1"
	longrunningpb "google.golang.org/genproto/googleapis/longrunning"
	"google.golang.org/grpc"
	"google.golang.org/grpc/codes"
	"google.golang.org/grpc/metadata"
	"google.golang.org/protobuf/proto"
)
var newEchoClientHook clientHook
type EchoCallOptions struct {
	Echo                    []gax.CallOption
	Expand                  []gax.CallOption
	Collect                 []gax.CallOption
	Chat                    []gax.CallOption
	PagedExpand             []gax.CallOption
	PagedExpandLegacy       []gax.CallOption
	PagedExpandLegacyMapped []gax.CallOption
	Wait                    []gax.CallOption
	Block                   []gax.CallOption
	ListLocations           []gax.CallOption
	GetLocation             []gax.CallOption
	SetIamPolicy            []gax.CallOption
	GetIamPolicy            []gax.CallOption
	TestIamPermissions      []gax.CallOption
	ListOperations          []gax.CallOption
	GetOperation            []gax.CallOption
	DeleteOperation         []gax.CallOption
	CancelOperation         []gax.CallOption
}
func defaultEchoGRPCClientOptions() []option.ClientOption {
	return []option.ClientOption{
		internaloption.WithDefaultEndpoint("localhost:7469"),
		internaloption.WithDefaultMTLSEndpoint("localhost:7469"),
		internaloption.WithDefaultAudience("https://localhost/"),
		internaloption.WithDefaultScopes(DefaultAuthScopes()...),
		internaloption.EnableJwtWithScope(),
		option.WithGRPCDialOption(grpc.WithDisableServiceConfig()),
		option.WithGRPCDialOption(grpc.WithDefaultCallOptions(
			grpc.MaxCallRecvMsgSize(math.MaxInt32))),
	}
}
func defaultEchoCallOptions() *EchoCallOptions {
	return &EchoCallOptions{
		Echo: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
					codes.Unknown,
				}, gax.Backoff{
					Initial:    100 * time.Millisecond,
					Max:        3000 * time.Millisecond,
					Multiplier: 2.00,
				})
			}),
		},
		Expand: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
					codes.Unknown,
				}, gax.Backoff{
					Initial:    100 * time.Millisecond,
					Max:        3000 * time.Millisecond,
					Multiplier: 2.00,
				})
			}),
		},
		Collect: []gax.CallOption{},
		Chat:    []gax.CallOption{},
		PagedExpand: []gax.CallOption{
			gax.WithRetry(func() gax.Retryer {
				return gax.OnCodes([]codes.Code{
					codes.Unavailable,
					codes.Unknown,
				}, gax.Backoff{
					Initial:    100 * time.Millisecond,
					Max:        3000 * time.Millisecond,
					Multiplier: 2.00,
				})
			}),
		},
		PagedExpandLegacy:       []gax.CallOption{},
		PagedExpandLegacyMapped: []gax.CallOption{},
		Wait:                    []gax.CallOption{},
		Block:                   []gax.CallOption{},
		ListLocations:           []gax.CallOption{},
		GetLocation:             []gax.CallOption{},
		SetIamPolicy:            []gax.CallOption{},
		GetIamPolicy:            []gax.CallOption{},
		TestIamPermissions:      []gax.CallOption{},
		ListOperations:          []gax.CallOption{},
		GetOperation:            []gax.CallOption{},
		DeleteOperation:         []gax.CallOption{},
		CancelOperation:         []gax.CallOption{},
	}
}
type internalEchoClient interface {
	Close() error
	setGoogleClientInfo(...string)
	Connection() *grpc.ClientConn
	Echo(context.Context, *genprotopb.EchoRequest, ...gax.CallOption) (*genprotopb.EchoResponse, error)
	Expand(context.Context, *genprotopb.ExpandRequest, ...gax.CallOption) (genprotopb.Echo_ExpandClient, error)
	Collect(context.Context, ...gax.CallOption) (genprotopb.Echo_CollectClient, error)
	Chat(context.Context, ...gax.CallOption) (genprotopb.Echo_ChatClient, error)
	PagedExpand(context.Context, *genprotopb.PagedExpandRequest, ...gax.CallOption) *EchoResponseIterator
	PagedExpandLegacy(context.Context, *genprotopb.PagedExpandLegacyRequest, ...gax.CallOption) *EchoResponseIterator
	PagedExpandLegacyMapped(context.Context, *genprotopb.PagedExpandRequest, ...gax.CallOption) *PagedExpandResponseListPairIterator
	Wait(context.Context, *genprotopb.WaitRequest, ...gax.CallOption) (*WaitOperation, error)
	WaitOperation(name string) *WaitOperation
	Block(context.Context, *genprotopb.BlockRequest, ...gax.CallOption) (*genprotopb.BlockResponse, error)
	ListLocations(context.Context, *locationpb.ListLocationsRequest, ...gax.CallOption) *LocationIterator
	GetLocation(context.Context, *locationpb.GetLocationRequest, ...gax.CallOption) (*locationpb.Location, error)
	SetIamPolicy(context.Context, *iampb.SetIamPolicyRequest, ...gax.CallOption) (*iampb.Policy, error)
	GetIamPolicy(context.Context, *iampb.GetIamPolicyRequest, ...gax.CallOption) (*iampb.Policy, error)
	TestIamPermissions(context.Context, *iampb.TestIamPermissionsRequest, ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error)
	ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator
	GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error)
	DeleteOperation(context.Context, *longrunningpb.DeleteOperationRequest, ...gax.CallOption) error
	CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error
}
type EchoClient struct {
	internalClient internalEchoClient
	CallOptions *EchoCallOptions
	LROClient *lroauto.OperationsClient
}
func (c *EchoClient) Close() error {
	return c.internalClient.Close()
}
func (c *EchoClient) setGoogleClientInfo(keyval ...string) {
	c.internalClient.setGoogleClientInfo(keyval...)
}
func (c *EchoClient) Connection() *grpc.ClientConn {
	return c.internalClient.Connection()
}
func (c *EchoClient) Echo(ctx context.Context, req *genprotopb.EchoRequest, opts ...gax.CallOption) (*genprotopb.EchoResponse, error) {
	return c.internalClient.Echo(ctx, req, opts...)
}
func (c *EchoClient) Expand(ctx context.Context, req *genprotopb.ExpandRequest, opts ...gax.CallOption) (genprotopb.Echo_ExpandClient, error) {
	return c.internalClient.Expand(ctx, req, opts...)
}
func (c *EchoClient) Collect(ctx context.Context, opts ...gax.CallOption) (genprotopb.Echo_CollectClient, error) {
	return c.internalClient.Collect(ctx, opts...)
}
func (c *EchoClient) Chat(ctx context.Context, opts ...gax.CallOption) (genprotopb.Echo_ChatClient, error) {
	return c.internalClient.Chat(ctx, opts...)
}
func (c *EchoClient) PagedExpand(ctx context.Context, req *genprotopb.PagedExpandRequest, opts ...gax.CallOption) *EchoResponseIterator {
	return c.internalClient.PagedExpand(ctx, req, opts...)
}
func (c *EchoClient) PagedExpandLegacy(ctx context.Context, req *genprotopb.PagedExpandLegacyRequest, opts ...gax.CallOption) *EchoResponseIterator {
	return c.internalClient.PagedExpandLegacy(ctx, req, opts...)
}
func (c *EchoClient) PagedExpandLegacyMapped(ctx context.Context, req *genprotopb.PagedExpandRequest, opts ...gax.CallOption) *PagedExpandResponseListPairIterator {
	return c.internalClient.PagedExpandLegacyMapped(ctx, req, opts...)
}
func (c *EchoClient) Wait(ctx context.Context, req *genprotopb.WaitRequest, opts ...gax.CallOption) (*WaitOperation, error) {
	return c.internalClient.Wait(ctx, req, opts...)
}
func (c *EchoClient) WaitOperation(name string) *WaitOperation {
	return c.internalClient.WaitOperation(name)
}
func (c *EchoClient) Block(ctx context.Context, req *genprotopb.BlockRequest, opts ...gax.CallOption) (*genprotopb.BlockResponse, error) {
	return c.internalClient.Block(ctx, req, opts...)
}
func (c *EchoClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator {
	return c.internalClient.ListLocations(ctx, req, opts...)
}