code: @Override
      public ListShardsResult listShards(ListShardsRequest request) {
          request = beforeClientExecution(request);
          return executeListShards(request);
      }
docs: <p>
  Lists the shards in a stream and provides information about each shard. This operation has a limit of 100
  transactions per second per data stream.
  </p>
  <important>
  <p>
  This API is a new operation that is used by the Amazon Kinesis Client Library (KCL). If you have a fine-grained
  IAM policy that only allows specific operations, you must update your policy to allow calls to this API. For more
  information, see <a href="https://docs.aws.amazon.com/streams/latest/dev/controlling-access.html">Controlling
  Access to Amazon Kinesis Data Streams Resources Using IAM</a>.
  </p>
  </important>
  
  @param listShardsRequest
  @return Result of the ListShards operation returned by the service.
  @throws ResourceNotFoundException
  The requested resource could not be found. The stream might not be specified correctly.
  @throws InvalidArgumentException
  A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information,
  see the returned message.
  @throws LimitExceededException
  The requested resource exceeds the maximum number allowed, or the number of concurrent stream requests
  exceeds the maximum number allowed.
  @throws ExpiredNextTokenException
  The pagination token passed to the operation is expired.
  @throws ResourceInUseException
  The resource is not available for this operation. For successful operation, the resource must be in the
  <code>ACTIVE</code> state.
  @sample AmazonKinesis.ListShards
  @see <a href="http://docs.aws.amazon.com/goto/WebAPI/kinesis-2013-12-02/ListShards" target="_top">AWS API
  Documentation</a>