code: private static Observable<List<File>> createFileFromUri(final Context context,
        final ArrayList<Uri> uris, final MimeMap mimeTypeMap) {
      return Observable.defer(new Func0<Observable<List<File>>>() {
        @Override
        public Observable<List<File>> call() {
  
          List<File> filesRetrieved = new ArrayList<>(uris.size());
  
          for (Uri data : uris) {
            try {
              filesRetrieved.add(fileFromUri(context, data, mimeTypeMap));
            } catch (Exception e) {
              logError(e);
              return Observable.error(e);
            }
          }
  
          return Observable.just(filesRetrieved);
        }
      });
    }
docs: /*
  Create a copy of the files found under the provided ArrayList of Uris, in the Library's cache folder.
  
  You can supply mime type mapping parameter to choose which map will be used.
  
  MIME_TYPE_MAP - The mime type of the resource will be determined by MimeTypeMap.getMimeTypeFromExtension() method.
  URL_CONNECTION_MAP - The mime type of the resource will be determined by URLConnection.guessContentTypeFromName() method.