code: private Iterable<CloudFileShare> listSharesWithPrefix(final String prefix,
              final EnumSet<ShareListingDetails> detailsIncluded, FileRequestOptions options, OperationContext opContext) {
          if (opContext == null) {
              opContext = new OperationContext();
          }
  
          opContext.initialize();
          options = FileRequestOptions.populateAndApplyDefaults(options, this);
  
          SegmentedStorageRequest segmentedRequest = new SegmentedStorageRequest();
  
          return new LazySegmentedIterable<CloudFileClient, Void, CloudFileShare>(this.listSharesWithPrefixSegmentedImpl(
                  prefix, detailsIncluded, null, options, segmentedRequest), this, null, options.getRetryPolicyFactory(),
                  opContext);
      }
docs: Returns an enumerable collection of shares whose names begin with the specified prefix, using the
  specified details settings, request options, and operation context.
  
  @param prefix
  A <code>String</code> that represents the prefix of the share name.
  @param detailsIncluded
  A <code>java.util.EnumSet</code> object that contains {@link ShareListingDetails} values that indicate
  whether share snapshots and/or metadata will be returned.
  @param options
  A {@link FileRequestOptions} object that specifies any additional options for the request. Specifying
  <code>null</code> will use the default request options from the associated service client (
  {@link CloudFileClient}).
  @param opContext
  An {@link OperationContext} object that represents the context for the current operation. This object
  is used to track requests to the storage service, and to provide additional runtime information about
  the operation.
  
  @return An enumerable collection of {@link CloudFileShare} objects retrieved lazily that represent the
  shares whose names begin with the specified prefix.