nus-yam/ex-repair huggingface dataset:
Program: 93071
Project: 93071
Buggy source:
@Override public Operation create(SnapshotInfo snapshot,final OperationOption... options){
  final SnapshotInfo completeSnapshot=snapshot.setProjectId(options().projectId());
  final Map<ComputeRpc.Option,?> optionsMap=optionMap(options);
  try {
    com.google.api.services.compute.model.Operation answer=runWithRetries(new Callable<com.google.api.services.compute.model.Operation>(){
      @Override public com.google.api.services.compute.model.Operation call(){
        return computeRpc.createSnapshot(completeSnapshot.sourceDisk().zone(),completeSnapshot.sourceDisk().disk(),completeSnapshot.snapshotId().snapshot(),completeSnapshot.description(),optionsMap);
      }
    }
,options().retryParams(),EXCEPTION_HANDLER);
    return answer == null ? null : Operation.fromPb(this,answer);
  }
 catch (  RetryHelper.RetryHelperException e) {
    throw ComputeException.translateAndThrow(e);
  }
}

Fixed version (ground truth):
@Override public Operation create(SnapshotInfo snapshot,OperationOption... options){
  final SnapshotInfo completeSnapshot=snapshot.setProjectId(options().projectId());
  final Map<ComputeRpc.Option,?> optionsMap=optionMap(options);
  try {
    com.google.api.services.compute.model.Operation answer=runWithRetries(new Callable<com.google.api.services.compute.model.Operation>(){
      @Override public com.google.api.services.compute.model.Operation call(){
        return computeRpc.createSnapshot(completeSnapshot.sourceDisk().zone(),completeSnapshot.sourceDisk().disk(),completeSnapshot.snapshotId().snapshot(),completeSnapshot.description(),optionsMap);
      }
    }
,options().retryParams(),EXCEPTION_HANDLER);
    return answer == null ? null : Operation.fromPb(this,answer);
  }
 catch (  RetryHelper.RetryHelperException e) {
    throw ComputeException.translateAndThrow(e);
  }
}
Program: 93072
Project: 93072
Buggy source:
@Override public com.google.api.services.compute.model.Operation call(){
  return computeRpc.deleteSnapshot(snapshot.snapshot(),optionsMap);
}

Fixed version (ground truth):
@Override public com.google.api.services.compute.model.Operation call(){
  return computeRpc.deleteSnapshot(snapshot,optionsMap);
}
Program: 93073
Project: 93073
Buggy source:
/** 
 * Deletes this snapshot.
 * @return a global operation if delete request was successfully sent, {@code null} if thesnapshot was not found
 * @throws ComputeException upon failure
 */
public Operation delete(Compute.OperationOption... options){
  return compute.deleteSnapshot(snapshotId(),options);
}

Fixed version (ground truth):
/** 
 * Deletes this snapshot.
 * @return a global operation if delete request was successfully sent, {@code null} if thesnapshot was not found
 * @throws ComputeException upon failure
 */
public Operation delete(OperationOption... options){
  return compute.deleteSnapshot(snapshotId(),options);
}
Program: 93074
Project: 93074
Buggy source:
/** 
 * Fetches current snapshot's latest information. Returns   {@code null} if the snapshot does notexist.
 * @param options snapshot options
 * @return a {@code Snapshot} object with latest information or {@code null} if not found
 * @throws ComputeException upon failure
 */
public Snapshot reload(Compute.SnapshotOption... options){
  return compute.getSnapshot(snapshotId().snapshot(),options);
}

Fixed version (ground truth):
/** 
 * Fetches current snapshot's latest information. Returns   {@code null} if the snapshot does notexist.
 * @param options snapshot options
 * @return a {@code Snapshot} object with latest information or {@code null} if not found
 * @throws ComputeException upon failure
 */
public Snapshot reload(SnapshotOption... options){
  return compute.getSnapshot(snapshotId().snapshot(),options);
}
Program: 93075
Project: 93075
Buggy source:
/** 
 * Checks if this snapshot exists.
 * @return {@code true} if this snapshot exists, {@code false} otherwise
 * @throws ComputeException upon failure
 */
public boolean exists(){
  return reload(Compute.SnapshotOption.fields()) != null;
}

Fixed version (ground truth):
/** 
 * Checks if this snapshot exists.
 * @return {@code true} if this snapshot exists, {@code false} otherwise
 * @throws ComputeException upon failure
 */
public boolean exists(){
  return reload(SnapshotOption.fields()) != null;
}
Program: 93076
Project: 93076
Buggy source:
/** 
 * Defines an inequality filter.
 */
ListFilter(String field,ComparisonOperator operator,Object value){
  this.field=field;
  this.operator=operator;
  this.value=value;
}

Fixed version (ground truth):
/** 
 * Defines a not-equals filter.
 */
ListFilter(String field,ComparisonOperator operator,Object value){
  this.field=field;
  this.operator=operator;
  this.value=value;
}
Program: 93077
Project: 93077
Buggy source:
/** 
 * Returns an option to specify the operation's fields to be returned by the RPC call. If this option is not provided all operation's fields are returned.  {@code OperationListOption.fields} can be used to specify only the fields of interest.{@link Operation#operationId()} is always returned, even if not specified.
 */
public static OperationListOption fields(OperationField... fields){
  StringBuilder builder=new StringBuilder();
  builder.append("String_Node_Str").append(OperationField.selector(fields)).append("String_Node_Str");
  return new OperationListOption(ComputeRpc.Option.FIELDS,builder.toString());
}

Fixed version (ground truth):
/** 
 * Returns an option to specify the operation's fields to be returned by the RPC call. If this option is not provided, all operation's fields are returned.  {@code OperationListOption.fields} can be used to specify only the fields of interest.{@link Operation#operationId()} is always returned, even if not specified.
 */
public static OperationListOption fields(OperationField... fields){
  StringBuilder builder=new StringBuilder();
  builder.append("String_Node_Str").append(OperationField.selector(fields)).append("String_Node_Str");
  return new OperationListOption(ComputeRpc.Option.FIELDS,builder.toString());
}
Program: 93078
Project: 93078
Buggy source:
/** 
 * Returns an option to specify a filter to the operations being listed.
 */
public static OperationListOption filter(OperationFilter filter){
  return new OperationListOption(ComputeRpc.Option.FILTER,filter.toPb());
}

Fixed version (ground truth):
/** 
 * Returns an option to specify a filter on the operations being listed.
 */
public static OperationListOption filter(OperationFilter filter){
  return new OperationListOption(ComputeRpc.Option.FILTER,filter.toPb());
}
Program: 93079
Project: 93079
Buggy source:
/** 
 * Returns an inequality filter for the given field and integer value.
 */
public static OperationFilter notEquals(OperationField field,int value){
  return new OperationFilter(checkNotNull(field),ComparisonOperator.NE,value);
}

Fixed version (ground truth):
/** 
 * Returns a not-equals filter for the given field and integer value.
 */
public static OperationFilter notEquals(OperationField field,int value){
  return new OperationFilter(checkNotNull(field),ComparisonOperator.NE,value);
}
Program: 93080
Project: 93080
Buggy source:
/** 
 * Returns the operation's identity. This method returns an   {@link GlobalOperationId} for globaloperations, returns a  {@link RegionOperationId} for region operations and returns a{@link ZoneOperationId} for zone operations.
 * @see <a href="https://www.ietf.org/rfc/rfc1035.txt">RFC1035</a>
 */
@SuppressWarnings("String_Node_Str") public <T extends OperationId>T operationId(){
  return (T)operationId;
}

Fixed version (ground truth):
/** 
 * Returns the operation's identity. This method returns an   {@link GlobalOperationId} for globaloperations, a  {@link RegionOperationId} for region operations and a {@link ZoneOperationId} forzone operations.
 * @see <a href="https://www.ietf.org/rfc/rfc1035.txt">RFC1035</a>
 */
@SuppressWarnings("String_Node_Str") public <T extends OperationId>T operationId(){
  return (T)operationId;
}
Program: 93081
Project: 93081
Buggy source:
/** 
 * Checks if this operation has completed its execution, either failing or succeeding. If the operation does not exist this method returns   {@code false}. To correctly wait for operation's completion check that the operation exists first, using   {@link #exists()}: <pre>   {@code}if (operation.exists())  while(!operation.isDone()) { Thread.sleep(1000L); } }}</pre>
 * @return {@code true} if this operation is in {@link Operation.Status#DONE} state, {@code false}if the state is not   {@link Operation.Status#DONE} or the operation does not exist
 * @throws ComputeException upon failure
 */
public boolean isDone() throws ComputeException {
  Operation operation=compute.get(operationId,Compute.OperationOption.fields(Compute.OperationField.STATUS));
  return operation != null && operation.status() == Status.DONE;
}

Fixed version (ground truth):
/** 
 * Checks if this operation has completed its execution, either failing or succeeding. If the operation does not exist this method returns   {@code false}. To correctly wait for operation's completion, check that the operation exists first using   {@link #exists()}: <pre>   {@code}if (operation.exists())  while(!operation.isDone()) { Thread.sleep(1000L); } }}</pre>
 * @return {@code true} if this operation is in {@link Operation.Status#DONE} state, {@code false}if the state is not   {@link Operation.Status#DONE} or the operation does not exist
 * @throws ComputeException upon failure
 */
public boolean isDone() throws ComputeException {
  Operation operation=compute.get(operationId,Compute.OperationOption.fields(Compute.OperationField.STATUS));
  return operation != null && operation.status() == Status.DONE;
}
Program: 93082
Project: 93082
Buggy source:
/** 
 * Creates an object.
 */
public Operation build(){
  return new Operation(this);
}

Fixed version (ground truth):
Operation build(){
  return new Operation(this);
}
Program: 93083
Project: 93083
Buggy source:
/** 
 * Returns a fully qualified URL to the entity.
 */
String selfLink();

Fixed version (ground truth):
/** 
 * Returns a fully qualified URL to the operation.
 */
String selfLink();
Program: 93084
Project: 93084
Buggy source:
@Override public boolean equals(Object obj){
  return obj instanceof RegionOperationId && baseEquals((RegionOperationId)obj);
}

Fixed version (ground truth):
@Override public boolean equals(Object obj){
  return obj instanceof RegionOperationId && baseEquals((RegionOperationId)obj) && Objects.equals(operation,((RegionOperationId)obj).operation);
}
Program: 93085
Project: 93085
Buggy source:
@Test public void testChunkSize() throws IOException {
  channel.chunkSize(42);
  assertEquals(MIN_CHUNK_SIZE,channel.chunkSize());
  channel.chunkSize(2 * MIN_CHUNK_SIZE);
  assertEquals(2 * MIN_CHUNK_SIZE,channel.chunkSize());
  channel.chunkSize(512 * 1025);
  assertEquals(2 * MIN_CHUNK_SIZE,channel.chunkSize());
}

Fixed version (ground truth):
@Test public void testChunkSize(){
  channel.chunkSize(42);
  assertEquals(MIN_CHUNK_SIZE,channel.chunkSize());
  channel.chunkSize(2 * MIN_CHUNK_SIZE);
  assertEquals(2 * MIN_CHUNK_SIZE,channel.chunkSize());
  channel.chunkSize(512 * 1025);
  assertEquals(2 * MIN_CHUNK_SIZE,channel.chunkSize());
}
Program: 93086
Project: 93086
Buggy source:
@Test public void testConstructor() throws IOException {
  assertEquals(null,channel.options());
  assertEquals(ENTITY,channel.entity());
  assertEquals(0,channel.position());
  assertEquals(UPLOAD_ID,channel.uploadId());
  assertEquals(0,channel.limit());
  assertTrue(channel.isOpen());
  assertArrayEquals(new byte[0],channel.buffer());
  assertEquals(DEFAULT_CHUNK_SIZE,channel.chunkSize());
}

Fixed version (ground truth):
@Test public void testConstructor(){
  assertEquals(null,channel.options());
  assertEquals(ENTITY,channel.entity());
  assertEquals(0,channel.position());
  assertEquals(UPLOAD_ID,channel.uploadId());
  assertEquals(0,channel.limit());
  assertTrue(channel.isOpen());
  assertArrayEquals(new byte[0],channel.buffer());
  assertEquals(DEFAULT_CHUNK_SIZE,channel.chunkSize());
}
Program: 93087
Project: 93087
Buggy source:
@Test public void testWriteChannelState() throws IOException, ClassNotFoundException {
  BigQueryOptions options=BigQueryOptions.builder().projectId("String_Node_Str").retryParams(RetryParams.defaultInstance()).build();
  @SuppressWarnings("String_Node_Str") TableDataWriteChannel writer=new TableDataWriteChannel(options,LOAD_CONFIGURATION,"String_Node_Str");
  RestorableState<WriteChannel> state=writer.capture();
  RestorableState<WriteChannel> deserializedState=serializeAndDeserialize(state);
  assertEquals(state,deserializedState);
  assertEquals(state.hashCode(),deserializedState.hashCode());
  assertEquals(state.toString(),deserializedState.toString());
}

Fixed version (ground truth):
@Test public void testWriteChannelState() throws IOException, ClassNotFoundException {
  BigQueryOptions options=BigQueryOptions.builder().projectId("String_Node_Str").build();
  @SuppressWarnings("String_Node_Str") TableDataWriteChannel writer=new TableDataWriteChannel(options,LOAD_CONFIGURATION,"String_Node_Str");
  assertRestorable(writer);
}
Program: 93088
Project: 93088
Buggy source:
@Override public Serializable[] serializableObjects(){
  BigQueryOptions options=BigQueryOptions.builder().projectId("String_Node_Str").authCredentials(AuthCredentials.createForAppEngine()).build();
  BigQueryOptions otherOptions=options.toBuilder().projectId("String_Node_Str").retryParams(RetryParams.defaultInstance()).authCredentials(null).build();
  return new Serializable[]{DOMAIN_ACCESS,GROUP_ACCESS,USER_ACCESS,VIEW_ACCESS,DATASET_ID,DATASET_INFO,TABLE_ID,CSV_OPTIONS,STREAMING_BUFFER,TABLE_DEFINITION,EXTERNAL_TABLE_DEFINITION,VIEW_DEFINITION,TABLE_SCHEMA,TABLE_INFO,VIEW_INFO,EXTERNAL_TABLE_INFO,INLINE_FUNCTION,URI_FUNCTION,JOB_STATISTICS,EXTRACT_STATISTICS,LOAD_STATISTICS,QUERY_STATISTICS,BIGQUERY_ERROR,JOB_STATUS,JOB_ID,COPY_JOB_CONFIGURATION,EXTRACT_JOB_CONFIGURATION,LOAD_CONFIGURATION,LOAD_JOB_CONFIGURATION,QUERY_JOB_CONFIGURATION,JOB_INFO,INSERT_ALL_REQUEST,INSERT_ALL_RESPONSE,FIELD_VALUE,QUERY_REQUEST,QUERY_RESPONSE,BigQuery.DatasetOption.fields(),BigQuery.DatasetDeleteOption.deleteContents(),BigQuery.DatasetListOption.all(),BigQuery.TableOption.fields(),BigQuery.TableListOption.pageSize(42L),BigQuery.JobOption.fields(),BigQuery.JobListOption.allUsers(),DATASET,TABLE,JOB,options,otherOptions};
}

Fixed version (ground truth):
@Override public Serializable[] serializableObjects(){
  BigQueryOptions options=BigQueryOptions.builder().projectId("String_Node_Str").authCredentials(AuthCredentials.createForAppEngine()).build();
  BigQueryOptions otherOptions=options.toBuilder().projectId("String_Node_Str").authCredentials(null).build();
  return new Serializable[]{DOMAIN_ACCESS,GROUP_ACCESS,USER_ACCESS,VIEW_ACCESS,DATASET_ID,DATASET_INFO,TABLE_ID,CSV_OPTIONS,STREAMING_BUFFER,TABLE_DEFINITION,EXTERNAL_TABLE_DEFINITION,VIEW_DEFINITION,TABLE_SCHEMA,TABLE_INFO,VIEW_INFO,EXTERNAL_TABLE_INFO,INLINE_FUNCTION,URI_FUNCTION,JOB_STATISTICS,EXTRACT_STATISTICS,LOAD_STATISTICS,QUERY_STATISTICS,BIGQUERY_ERROR,JOB_STATUS,JOB_ID,COPY_JOB_CONFIGURATION,EXTRACT_JOB_CONFIGURATION,LOAD_CONFIGURATION,LOAD_JOB_CONFIGURATION,QUERY_JOB_CONFIGURATION,JOB_INFO,INSERT_ALL_REQUEST,INSERT_ALL_RESPONSE,FIELD_VALUE,QUERY_REQUEST,QUERY_RESPONSE,BigQuery.DatasetOption.fields(),BigQuery.DatasetDeleteOption.deleteContents(),BigQuery.DatasetListOption.all(),BigQuery.TableOption.fields(),BigQuery.TableListOption.pageSize(42L),BigQuery.JobOption.fields(),BigQuery.JobListOption.allUsers(),DATASET,TABLE,JOB,options,otherOptions};
}
Program: 93089
Project: 93089
Buggy source:
@Override public boolean equals(Object obj){
  return obj instanceof ApplicationDefaultAuthCredentialsState;
}

Fixed version (ground truth):
@Override public boolean equals(Object obj){
  return obj instanceof NoAuthCredentialsState;
}
Program: 93090
Project: 93090
Buggy source:
@Override public int hashCode(){
  return exception.hashCode();
}

Fixed version (ground truth):
@Override public int hashCode(){
  return Objects.hash(interceptors,retriableExceptions,nonRetriableExceptions,retryInfo);
}
Program: 93091
Project: 93091
Buggy source:
@Override public boolean equals(Object obj){
  if (obj == this) {
    return true;
  }
  if (!(obj instanceof RetryInfo)) {
    return false;
  }
  return ((RetryInfo)obj).exception.equals(exception);
}

Fixed version (ground truth):
@Override public boolean equals(Object obj){
  if (obj == this) {
    return true;
  }
  if (!(obj instanceof ExceptionHandler)) {
    return false;
  }
  ExceptionHandler other=(ExceptionHandler)obj;
  return Objects.equals(interceptors,other.interceptors) && Objects.equals(retriableExceptions,other.retriableExceptions) && Objects.equals(nonRetriableExceptions,other.nonRetriableExceptions)&& Objects.equals(retryInfo,other.retryInfo);
}
Program: 93092
Project: 93092
Buggy source:
public abstract Serializable[] serializableObjects();

Fixed version (ground truth):
/** 
 * Returns all objects for which correct serialization must be tested.
 */
public abstract Serializable[] serializableObjects();
Program: 93093
Project: 93093
Buggy source:
@Override public Serializable[] serializableObjects(){
  return new Serializable[]{PAGE,RETRY_PARAMS};
}

Fixed version (ground truth):
@Override public Serializable[] serializableObjects(){
  return new Serializable[]{EXCEPTION_HANDLER,IDENTITY,PAGE,RETRY_PARAMS};
}
Program: 93094
Project: 93094
Buggy source:
@Override public java.io.Serializable[] serializableObjects(){
  DatastoreOptions options=DatastoreOptions.builder().authCredentials(AuthCredentials.createForAppEngine()).normalizeDataset(false).projectId("String_Node_Str").build();
  DatastoreOptions otherOptions=options.toBuilder().namespace("String_Node_Str").retryParams(RetryParams.defaultInstance()).authCredentials(null).force(true).build();
  return new java.io.Serializable[]{KEY1,KEY2,INCOMPLETE_KEY1,INCOMPLETE_KEY2,ENTITY1,ENTITY2,ENTITY3,EMBEDDED_ENTITY,PROJECTION_ENTITY,DATE_TIME1,BLOB1,CURSOR1,GQL1,GQL2,QUERY1,QUERY2,QUERY3,NULL_VALUE,KEY_VALUE,STRING_VALUE,EMBEDDED_ENTITY_VALUE1,EMBEDDED_ENTITY_VALUE2,EMBEDDED_ENTITY_VALUE3,LIST_VALUE,LONG_VALUE,DOUBLE_VALUE,BOOLEAN_VALUE,DATE_AND_TIME_VALUE,BLOB_VALUE,RAW_VALUE,options,otherOptions};
}

Fixed version (ground truth):
@Override public java.io.Serializable[] serializableObjects(){
  DatastoreOptions options=DatastoreOptions.builder().authCredentials(AuthCredentials.createForAppEngine()).normalizeDataset(false).projectId("String_Node_Str").build();
  DatastoreOptions otherOptions=options.toBuilder().namespace("String_Node_Str").authCredentials(null).force(true).build();
  return new java.io.Serializable[]{KEY1,KEY2,INCOMPLETE_KEY1,INCOMPLETE_KEY2,ENTITY1,ENTITY2,ENTITY3,EMBEDDED_ENTITY,PROJECTION_ENTITY,DATE_TIME1,BLOB1,CURSOR1,GQL1,GQL2,QUERY1,QUERY2,QUERY3,NULL_VALUE,KEY_VALUE,STRING_VALUE,EMBEDDED_ENTITY_VALUE1,EMBEDDED_ENTITY_VALUE2,EMBEDDED_ENTITY_VALUE3,LIST_VALUE,LONG_VALUE,DOUBLE_VALUE,BOOLEAN_VALUE,DATE_AND_TIME_VALUE,BLOB_VALUE,RAW_VALUE,options,otherOptions};
}
Program: 93095
Project: 93095
Buggy source:
@Override public Serializable[] serializableObjects(){
  ResourceManagerOptions options=ResourceManagerOptions.builder().build();
  ResourceManagerOptions otherOptions=options.toBuilder().projectId("String_Node_Str").retryParams(RetryParams.defaultInstance()).build();
  return new Serializable[]{PARTIAL_PROJECT_INFO,FULL_PROJECT_INFO,PROJECT,PAGE_RESULT,PROJECT_GET_OPTION,PROJECT_LIST_OPTION,POLICY,options,otherOptions};
}

Fixed version (ground truth):
@Override public Serializable[] serializableObjects(){
  ResourceManagerOptions options=ResourceManagerOptions.builder().build();
  ResourceManagerOptions otherOptions=options.toBuilder().projectId("String_Node_Str").build();
  return new Serializable[]{PARTIAL_PROJECT_INFO,FULL_PROJECT_INFO,PROJECT,PAGE_RESULT,PROJECT_GET_OPTION,PROJECT_LIST_OPTION,POLICY,options,otherOptions};
}
Program: 93096
Project: 93096
Buggy source:
@Test public void testWriteChannelState() throws IOException, ClassNotFoundException {
  StorageOptions options=StorageOptions.builder().projectId("String_Node_Str").retryParams(RetryParams.defaultInstance()).build();
  @SuppressWarnings("String_Node_Str") BlobWriteChannel writer=new BlobWriteChannel(options,BlobInfo.builder(BlobId.of("String_Node_Str","String_Node_Str")).build(),"String_Node_Str");
  RestorableState<WriteChannel> state=writer.capture();
  RestorableState<WriteChannel> deserializedState=serializeAndDeserialize(state);
  assertEquals(state,deserializedState);
  assertEquals(state.hashCode(),deserializedState.hashCode());
  assertEquals(state.toString(),deserializedState.toString());
}

Fixed version (ground truth):
@Test public void testWriteChannelState() throws IOException, ClassNotFoundException {
  StorageOptions options=StorageOptions.builder().projectId("String_Node_Str").build();
  @SuppressWarnings("String_Node_Str") BlobWriteChannel writer=new BlobWriteChannel(options,BlobInfo.builder(BlobId.of("String_Node_Str","String_Node_Str")).build(),"String_Node_Str");
  assertRestorable(writer);
}
Program: 93097
Project: 93097
Buggy source:
@Override public Serializable[] serializableObjects(){
  StorageOptions options=StorageOptions.builder().projectId("String_Node_Str").authCredentials(AuthCredentials.createForAppEngine()).build();
  StorageOptions otherOptions=options.toBuilder().projectId("String_Node_Str").retryParams(RetryParams.defaultInstance()).authCredentials(null).build();
  return new Serializable[]{ACL_DOMAIN,ACL_GROUP,ACL_PROJECT_,ACL_USER,ACL_RAW,ACL,BLOB_INFO,BLOB,BUCKET_INFO,BUCKET,ORIGIN,CORS,BATCH_REQUEST,BATCH_RESPONSE,PAGE_RESULT,BLOB_LIST_OPTIONS,BLOB_SOURCE_OPTIONS,BLOB_TARGET_OPTIONS,BUCKET_LIST_OPTIONS,BUCKET_SOURCE_OPTIONS,BUCKET_TARGET_OPTIONS,options,otherOptions};
}

Fixed version (ground truth):
@Override public Serializable[] serializableObjects(){
  StorageOptions options=StorageOptions.builder().projectId("String_Node_Str").authCredentials(AuthCredentials.createForAppEngine()).build();
  StorageOptions otherOptions=options.toBuilder().projectId("String_Node_Str").authCredentials(null).build();
  return new Serializable[]{ACL_DOMAIN,ACL_GROUP,ACL_PROJECT_,ACL_USER,ACL_RAW,ACL,BLOB_INFO,BLOB,BUCKET_INFO,BUCKET,ORIGIN,CORS,BATCH_REQUEST,BATCH_RESPONSE,PAGE_RESULT,BLOB_LIST_OPTIONS,BLOB_SOURCE_OPTIONS,BLOB_TARGET_OPTIONS,BUCKET_LIST_OPTIONS,BUCKET_SOURCE_OPTIONS,BUCKET_TARGET_OPTIONS,options,otherOptions};
}
Program: 93098
Project: 93098
Buggy source:
@Test public void testReadChannelState() throws IOException, ClassNotFoundException {
  StorageOptions options=StorageOptions.builder().projectId("String_Node_Str").retryParams(RetryParams.defaultInstance()).build();
  ReadChannel reader=new BlobReadChannel(options,BlobId.of("String_Node_Str","String_Node_Str"),EMPTY_RPC_OPTIONS);
  RestorableState<ReadChannel> state=reader.capture();
  RestorableState<ReadChannel> deserializedState=serializeAndDeserialize(state);
  assertEquals(state,deserializedState);
  assertEquals(state.hashCode(),deserializedState.hashCode());
  assertEquals(state.toString(),deserializedState.toString());
  reader.close();
}

Fixed version (ground truth):
@Test public void testReadChannelState() throws IOException, ClassNotFoundException {
  StorageOptions options=StorageOptions.builder().projectId("String_Node_Str").build();
  ReadChannel reader=new BlobReadChannel(options,BlobId.of("String_Node_Str","String_Node_Str"),EMPTY_RPC_OPTIONS);
  assertRestorable(reader);
}
Program: 93099
Project: 93099
Buggy source:
protected static String message(IOException exception){
  if (exception instanceof GoogleJsonResponseException) {
    return ((GoogleJsonResponseException)exception).getDetails().getMessage();
  }
  return exception.getMessage();
}

Fixed version (ground truth):
protected static String message(IOException exception){
  if (exception instanceof GoogleJsonResponseException) {
    GoogleJsonError details=((GoogleJsonResponseException)exception).getDetails();
    if (details != null) {
      return details.getMessage();
    }
  }
  return exception.getMessage();
}
Program: 93100
Project: 93100
Buggy source:
@Override public Tuple<String,byte[]> read(StorageObject from,Map<Option,?> options,long position,int bytes){
  try {
    Get req=storage.objects().get(from.getBucket(),from.getName()).setGeneration(from.getGeneration()).setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(options)).setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(options)).setIfGenerationMatch(IF_GENERATION_MATCH.getLong(options)).setIfGenerationNotMatch(IF_GENERATION_NOT_MATCH.getLong(options));
    StringBuilder range=new StringBuilder();
    range.append("String_Node_Str").append(position).append("String_Node_Str").append(position + bytes - 1);
    req.getRequestHeaders().setRange(range.toString());
    ByteArrayOutputStream output=new ByteArrayOutputStream();
    req.executeMedia().download(output);
    String etag=req.getLastResponseHeaders().getETag();
    return Tuple.of(etag,output.toByteArray());
  }
 catch (  IOException ex) {
    throw translate(ex);
  }
}

Fixed version (ground truth):
@Override public Tuple<String,byte[]> read(StorageObject from,Map<Option,?> options,long position,int bytes){
  try {
    Get req=storage.objects().get(from.getBucket(),from.getName()).setGeneration(from.getGeneration()).setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(options)).setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(options)).setIfGenerationMatch(IF_GENERATION_MATCH.getLong(options)).setIfGenerationNotMatch(IF_GENERATION_NOT_MATCH.getLong(options));
    StringBuilder range=new StringBuilder();
    range.append("String_Node_Str").append(position).append("String_Node_Str").append(position + bytes - 1);
    req.getRequestHeaders().setRange(range.toString());
    ByteArrayOutputStream output=new ByteArrayOutputStream();
    req.executeMedia().download(output);
    String etag=req.getLastResponseHeaders().getETag();
    return Tuple.of(etag,output.toByteArray());
  }
 catch (  IOException ex) {
    StorageException serviceException=translate(ex);
    if (serviceException.code() == SC_REQUESTED_RANGE_NOT_SATISFIABLE) {
      return Tuple.of(null,new byte[0]);
    }
    throw serviceException;
  }
}
Program: 93101
Project: 93101
Buggy source:
@Override public int read(ByteBuffer byteBuffer) throws IOException {
  validateOpen();
  if (buffer == null) {
    if (endOfStream) {
      return -1;
    }
    final int toRead=Math.max(byteBuffer.remaining(),chunkSize);
    try {
      Tuple<String,byte[]> result=runWithRetries(new Callable<Tuple<String,byte[]>>(){
        @Override public Tuple<String,byte[]> call(){
          return storageRpc.read(storageObject,requestOptions,position,toRead);
        }
      }
,serviceOptions.retryParams(),StorageImpl.EXCEPTION_HANDLER);
      if (lastEtag != null && !Objects.equals(result.x(),lastEtag)) {
        StringBuilder messageBuilder=new StringBuilder();
        messageBuilder.append("String_Node_Str").append(blob).append("String_Node_Str");
        throw new StorageException(0,messageBuilder.toString());
      }
      lastEtag=result.x();
      buffer=result.y();
    }
 catch (    RetryHelper.RetryHelperException e) {
      throw StorageException.translateAndThrow(e);
    }
    if (toRead > buffer.length) {
      endOfStream=true;
      if (buffer.length == 0) {
        buffer=null;
        return -1;
      }
    }
  }
  int toWrite=Math.min(buffer.length - bufferPos,byteBuffer.remaining());
  byteBuffer.put(buffer,bufferPos,toWrite);
  bufferPos+=toWrite;
  if (bufferPos >= buffer.length) {
    position+=buffer.length;
    buffer=null;
    bufferPos=0;
  }
  return toWrite;
}

Fixed version (ground truth):
@Override public int read(ByteBuffer byteBuffer) throws IOException {
  validateOpen();
  if (buffer == null) {
    if (endOfStream) {
      return -1;
    }
    final int toRead=Math.max(byteBuffer.remaining(),chunkSize);
    try {
      Tuple<String,byte[]> result=runWithRetries(new Callable<Tuple<String,byte[]>>(){
        @Override public Tuple<String,byte[]> call(){
          return storageRpc.read(storageObject,requestOptions,position,toRead);
        }
      }
,serviceOptions.retryParams(),StorageImpl.EXCEPTION_HANDLER);
      if (result.y().length > 0 && lastEtag != null && !Objects.equals(result.x(),lastEtag)) {
        StringBuilder messageBuilder=new StringBuilder();
        messageBuilder.append("String_Node_Str").append(blob).append("String_Node_Str");
        throw new StorageException(0,messageBuilder.toString());
      }
      lastEtag=result.x();
      buffer=result.y();
    }
 catch (    RetryHelper.RetryHelperException e) {
      throw StorageException.translateAndThrow(e);
    }
    if (toRead > buffer.length) {
      endOfStream=true;
      if (buffer.length == 0) {
        buffer=null;
        return -1;
      }
    }
  }
  int toWrite=Math.min(buffer.length - bufferPos,byteBuffer.remaining());
  byteBuffer.put(buffer,bufferPos,toWrite);
  bufferPos+=toWrite;
  if (bufferPos >= buffer.length) {
    position+=buffer.length;
    buffer=null;
    bufferPos=0;
  }
  return toWrite;
}
Program: 93102
Project: 93102
Buggy source:
@Test public void testReadAndWriteChannelsWithDifferentFileSize() throws IOException {
  String blobNamePrefix="String_Node_Str";
  int[] blobSizes={0,700,1024 * 256,2 * 1024 * 1024,4 * 1024 * 1024,4 * 1024 * 1024 + 1};
  Random rnd=new Random();
  for (  int blobSize : blobSizes) {
    String blobName=blobNamePrefix + blobSize;
    BlobInfo blob=BlobInfo.builder(BUCKET,blobName).build();
    byte[] bytes=new byte[blobSize];
    rnd.nextBytes(bytes);
    try (WriteChannel writer=storage.writer(blob)){
      writer.write(ByteBuffer.wrap(BLOB_BYTE_CONTENT));
    }
     ByteBuffer readBytes;
    try (ReadChannel reader=storage.reader(blob.blobId())){
      readBytes=ByteBuffer.allocate(BLOB_BYTE_CONTENT.length);
      reader.read(readBytes);
    }
     assertArrayEquals(BLOB_BYTE_CONTENT,readBytes.array());
    assertTrue(storage.delete(BUCKET,blobName));
  }
}

Fixed version (ground truth):
@Test public void testReadAndWriteChannelsWithDifferentFileSize() throws IOException {
  String blobNamePrefix="String_Node_Str";
  int[] blobSizes={0,700,1024 * 256,2 * 1024 * 1024,4 * 1024 * 1024,4 * 1024 * 1024 + 1};
  Random rnd=new Random();
  for (  int blobSize : blobSizes) {
    String blobName=blobNamePrefix + blobSize;
    BlobInfo blob=BlobInfo.builder(BUCKET,blobName).build();
    byte[] bytes=new byte[blobSize];
    rnd.nextBytes(bytes);
    try (WriteChannel writer=storage.writer(blob)){
      writer.write(ByteBuffer.wrap(bytes));
    }
     ByteArrayOutputStream output=new ByteArrayOutputStream();
    try (ReadChannel reader=storage.reader(blob.blobId())){
      ByteBuffer buffer=ByteBuffer.allocate(64 * 1024);
      while (reader.read(buffer) > 0) {
        buffer.flip();
        output.write(buffer.array(),0,buffer.limit());
        buffer.clear();
      }
    }
     assertArrayEquals(bytes,output.toByteArray());
    assertTrue(storage.delete(BUCKET,blobName));
  }
}
Program: 93103
Project: 93103
Buggy source:
public B setNull(String name){
  properties.put(name,of());
  return self();
}

Fixed version (ground truth):
/** 
 * Sets a property of type   {@code NullValue}.
 * @param name name of the property
 */
public B setNull(String name){
  properties.put(name,of());
  return self();
}
Program: 93104
Project: 93104
Buggy source:
public B set(String name,Blob first,Blob second,Blob... others){
  List<BlobValue> values=new LinkedList<>();
  values.add(of(first));
  values.add(of(second));
  for (  Blob other : others) {
    values.add(of(other));
  }
  properties.put(name,of(values));
  return self();
}

Fixed version (ground truth):
/** 
 * Sets a list property containing elements of type   {@link BlobValue}.
 * @param name name of the property
 * @param first the first {@link Blob} in the list
 * @param second the second {@link Blob} in the list
 * @param others other {@link Blob}s in the list
 */
public B set(String name,Blob first,Blob second,Blob... others){
  List<BlobValue> values=new LinkedList<>();
  values.add(of(first));
  values.add(of(second));
  for (  Blob other : others) {
    values.add(of(other));
  }
  properties.put(name,of(values));
  return self();
}
Program: 93105
Project: 93105
Buggy source:
/** 
 * Returns the key's parent.
 */
@Override public Key parent(){
  List<PathElement> ancestors=ancestors();
  if (!ancestors.isEmpty()) {
    PathElement parent=ancestors.get(ancestors.size() - 1);
    Key.Builder keyBuilder;
    if (parent.hasName()) {
      keyBuilder=Key.builder(projectId(),parent.kind(),parent.name());
    }
 else {
      keyBuilder=Key.builder(projectId(),parent.kind(),parent.id());
    }
    return keyBuilder.ancestors(ancestors.subList(0,ancestors.size() - 1)).build();
  }
  return null;
}

Fixed version (ground truth):
/** 
 * Returns the key's parent.
 */
@Override public Key parent(){
  List<PathElement> ancestors=ancestors();
  if (ancestors.isEmpty()) {
    return null;
  }
  PathElement parent=ancestors.get(ancestors.size() - 1);
  Key.Builder keyBuilder;
  if (parent.hasName()) {
    keyBuilder=Key.builder(projectId(),parent.kind(),parent.name());
  }
 else {
    keyBuilder=Key.builder(projectId(),parent.kind(),parent.id());
  }
  String namespace=namespace();
  if (namespace != null) {
    keyBuilder.namespace(namespace);
  }
  return keyBuilder.ancestors(ancestors.subList(0,ancestors.size() - 1)).build();
}
Program: 93106
Project: 93106
Buggy source:
public static ListValue of(Value<?> first,Value<?> second,Value<?>... other){
  return new ListValue(first,second,other);
}

Fixed version (ground truth):
static ListValue of(Value<?> first,Value<?> second,Value<?>... other){
  return new ListValue(first,second,other);
}
Program: 93107
Project: 93107
Buggy source:
public Builder addValue(Value<?> first,Value<?> second,Value<?>... other){
  addValue(first);
  addValue(second);
  for (  Value<?> value : other) {
    addValue(value);
  }
  return this;
}

Fixed version (ground truth):
public Builder addValue(Value<?> first,Value<?>... other){
  addValue(first);
  for (  Value<?> value : other) {
    addValue(value);
  }
  return this;
}
Program: 93108
Project: 93108
Buggy source:
public static void main(String... args) throws IOException, InterruptedException {
  Map<String,String> parsedArgs=parseArgs(args);
  String action=parsedArgs.get("String_Node_Str");
  int port=(parsedArgs.get("String_Node_Str") == null) ? DEFAULT_PORT : Integer.parseInt(parsedArgs.get("String_Node_Str"));
  double consistency=parsedArgs.get("String_Node_Str") == null ? DEFAULT_CONSISTENCY : Double.parseDouble(parsedArgs.get("String_Node_Str"));
switch (action) {
case "String_Node_Str":
    if (!isActive(DEFAULT_PROJECT_ID,port)) {
      LocalGcdHelper helper=start(DEFAULT_PROJECT_ID,port,consistency);
      try (FileWriter writer=new FileWriter("String_Node_Str")){
        writer.write(helper.gcdPath.toAbsolutePath().toString() + System.lineSeparator());
        writer.write(Integer.toString(port));
      }
     }
  return;
case "String_Node_Str":
File file=new File("String_Node_Str");
String path=null;
boolean fileExists=file.exists();
if (fileExists) {
try (BufferedReader reader=new BufferedReader(new FileReader(file))){
path=reader.readLine();
port=Integer.parseInt(reader.readLine());
}
 }
sendQuitRequest(port);
if (fileExists) {
deleteRecurse(Paths.get(path));
file.delete();
}
return;
default :
break;
}
}

Fixed version (ground truth):
public static void main(String... args) throws IOException, InterruptedException {
  Map<String,String> parsedArgs=parseArgs(args);
  String action=parsedArgs.get("String_Node_Str");
  int port=(parsedArgs.get("String_Node_Str") == null) ? DEFAULT_PORT : Integer.parseInt(parsedArgs.get("String_Node_Str"));
switch (action) {
case "String_Node_Str":
    if (!isActive(DEFAULT_PROJECT_ID,port)) {
      double consistency=parsedArgs.get("String_Node_Str") == null ? DEFAULT_CONSISTENCY : Double.parseDouble(parsedArgs.get("String_Node_Str"));
      LocalGcdHelper helper=start(DEFAULT_PROJECT_ID,port,consistency);
      try (FileWriter writer=new FileWriter("String_Node_Str")){
        writer.write(helper.gcdPath.toAbsolutePath().toString() + System.lineSeparator());
        writer.write(Integer.toString(port));
      }
     }
  return;
case "String_Node_Str":
File file=new File("String_Node_Str");
String path=null;
boolean fileExists=file.exists();
if (fileExists) {
try (BufferedReader reader=new BufferedReader(new FileReader(file))){
path=reader.readLine();
port=Integer.parseInt(reader.readLine());
}
 }
sendQuitRequest(port);
if (fileExists) {
deleteRecurse(Paths.get(path));
file.delete();
}
return;
default :
break;
}
}
Program: 93109
Project: 93109
Buggy source:
@Test public void testBuilders() throws Exception {
  assertEquals("String_Node_Str",pk1.projectId());
  assertEquals("String_Node_Str",pk1.kind());
  assertTrue(pk1.ancestors().isEmpty());
  assertEquals("String_Node_Str",pk2.projectId());
  assertEquals("String_Node_Str",pk2.kind());
  assertEquals(parent.path(),pk2.ancestors());
  assertEquals(pk2,IncompleteKey.builder(pk2).build());
  IncompleteKey pk3=IncompleteKey.builder(pk2).kind("String_Node_Str").build();
  assertEquals("String_Node_Str",pk3.projectId());
  assertEquals("String_Node_Str",pk3.kind());
  assertEquals(parent.path(),pk3.ancestors());
}

Fixed version (ground truth):
@Test public void testBuilders() throws Exception {
  assertEquals("String_Node_Str",pk1.projectId());
  assertEquals("String_Node_Str",pk1.kind());
  assertTrue(pk1.ancestors().isEmpty());
  assertEquals("String_Node_Str",pk2.projectId());
  assertEquals("String_Node_Str",pk2.kind());
  assertEquals(parent1.path(),pk2.ancestors());
  assertEquals(pk2,IncompleteKey.builder(pk2).build());
  IncompleteKey pk3=IncompleteKey.builder(pk2).kind("String_Node_Str").build();
  assertEquals("String_Node_Str",pk3.projectId());
  assertEquals("String_Node_Str",pk3.kind());
  assertEquals(parent1.path(),pk3.ancestors());
}
Program: 93110
Project: 93110
Buggy source:
@Before public void setUp(){
  pk1=IncompleteKey.builder("String_Node_Str","String_Node_Str").build();
  parent=Key.builder("String_Node_Str","String_Node_Str",10).build();
  pk2=IncompleteKey.builder(parent,"String_Node_Str").build();
}

Fixed version (ground truth):
@Before public void setUp(){
  pk1=IncompleteKey.builder("String_Node_Str","String_Node_Str").build();
  parent1=Key.builder("String_Node_Str","String_Node_Str",10).namespace("String_Node_Str").build();
  pk2=IncompleteKey.builder(parent1,"String_Node_Str").build();
}
Program: 93111
Project: 93111
Buggy source:
@Test public void testParent(){
  assertNull(pk1.parent());
  assertEquals(parent,pk2.parent());
}

Fixed version (ground truth):
@Test public void testParent(){
  assertNull(pk1.parent());
  assertEquals(parent1,pk2.parent());
  Key parent2=Key.builder("String_Node_Str","String_Node_Str","String_Node_Str").namespace("String_Node_Str").build();
  IncompleteKey pk3=IncompleteKey.builder(parent2,"String_Node_Str").build();
  assertEquals(parent2,pk3.parent());
}
Program: 93112
Project: 93112
Buggy source:
/** 
 * Adds a row to be inserted without an associated id. <p>Example usage of adding a row without an associated id: <pre>     {@code InsertAllRequest.Builder builder = InsertAllRequest.builder(tableId); List<Long> repeatedFieldValue = Arrays.asList(1L, 2L); Map<String, Object> recordContent = new HashMap<String, Object>(); recordContent.put("subfieldName1", "value"); recordContent.put("subfieldName2", repeatedFieldValue); Map<String, Object> rowContent = new HashMap<String, Object>(); rowContent.put("fieldName1", true); rowContent.put("fieldName2", recordContent); builder.addRow(rowContent);}</pre>
 */
public Builder addRow(Map<String,Object> content){
  addRow(new RowToInsert(null,content));
  return this;
}

Fixed version (ground truth):
/** 
 * Adds a row to be inserted without an associated id. <p>Example usage of adding a row without an associated id: <pre>   {@code InsertAllRequest.Builder builder = InsertAllRequest.builder(tableId); List<Long> repeatedFieldValue = Arrays.asList(1L, 2L); Map<String, Object> recordContent = new HashMap<String, Object>(); recordContent.put("subfieldName1", "value"); recordContent.put("subfieldName2", repeatedFieldValue); Map<String, Object> rowContent = new HashMap<String, Object>(); rowContent.put("fieldName1", true); rowContent.put("fieldName2", recordContent); builder.addRow(rowContent);}</pre>
 */
public Builder addRow(Map<String,Object> content){
  addRow(new RowToInsert(null,content));
  return this;
}
Program: 93113
Project: 93113
Buggy source:
@AfterClass public static void afterClass() throws ExecutionException, InterruptedException {
  if (bigquery != null) {
    RemoteBigQueryHelper.forceDelete(bigquery,DATASET);
  }
  if (storage != null && !RemoteGcsHelper.forceDelete(storage,BUCKET,10,TimeUnit.SECONDS)) {
    if (LOG.isLoggable(Level.WARNING)) {
      LOG.log(Level.WARNING,"String_Node_Str",BUCKET);
    }
  }
}

Fixed version (ground truth):
@AfterClass public static void afterClass() throws ExecutionException, InterruptedException {
  if (bigquery != null) {
    RemoteBigQueryHelper.forceDelete(bigquery,DATASET);
  }
  if (storage != null && !RemoteGcsHelper.forceDelete(storage,BUCKET,10,TimeUnit.SECONDS) && LOG.isLoggable(Level.WARNING)) {
    LOG.log(Level.WARNING,"String_Node_Str",BUCKET);
  }
}
Program: 93114
Project: 93114
Buggy source:
/** 
 * Updates the blob's information. Bucket or blob's name cannot be changed by this method. If you want to rename the blob or move it to a different bucket use the   {@link #copyTo} and{@link #delete} operations. A new {@code Blob} object is returned. By default no checks aremade on the metadata generation of the current blob. If you want to update the information only if the current blob metadata are at their latest version use the  {@code metagenerationMatch}option:   {@code newBlob.update(BlobTargetOption.metagenerationMatch())}. <p>Original metadata are merged with metadata in the provided in this   {@code blob}. To replace metadata instead you first have to unset them. Unsetting metadata can be done by setting this  {@code blob}'s metadata to   {@code null}. </p> <p>Example usage of replacing blob's metadata: <pre>      {@code blob.toBuilder().metadata(null).build().update();}{@code blob.toBuilder().metadata(newMetadata).build().update();}</pre>
 * @param options update options
 * @return a {@code Blob} object with updated information
 * @throws StorageException upon failure
 */
public Blob update(BlobTargetOption... options){
  return storage.update(this,options);
}

Fixed version (ground truth):
/** 
 * Updates the blob's information. Bucket or blob's name cannot be changed by this method. If you want to rename the blob or move it to a different bucket use the   {@link #copyTo} and{@link #delete} operations. A new {@code Blob} object is returned. By default no checks aremade on the metadata generation of the current blob. If you want to update the information only if the current blob metadata are at their latest version use the  {@code metagenerationMatch}option:   {@code newBlob.update(BlobTargetOption.metagenerationMatch())}. <p>Original metadata are merged with metadata in the provided in this   {@code blob}. To replace metadata instead you first have to unset them. Unsetting metadata can be done by setting this  {@code blob}'s metadata to   {@code null}. </p> <p>Example usage of replacing blob's metadata: <pre>   {@code blob.toBuilder().metadata(null).build().update();}{@code blob.toBuilder().metadata(newMetadata).build().update();}</pre>
 * @param options update options
 * @return a {@code Blob} object with updated information
 * @throws StorageException upon failure
 */
public Blob update(BlobTargetOption... options){
  return storage.update(this,options);
}
Program: 93115
Project: 93115
Buggy source:
/** 
 * Generates a signed URL for a blob. If you have a blob that you want to allow access to for a fixed amount of time, you can use this method to generate a URL that is only valid within a certain time period. This is particularly useful if you don't want publicly accessible blobs, but don't want to require users to explicitly log in. <p>Example usage of creating a signed URL that is valid for 2 weeks: <pre>     {@code service.signUrl(BlobInfo.builder("bucket", "name").build(), 14, TimeUnit.DAYS);}</pre>
 * @param blobInfo the blob associated with the signed URL
 * @param duration time until the signed URL expires, expressed in {@code unit}. The finest granularity supported is 1 second, finer granularities will be truncated
 * @param unit time unit of the {@code duration} parameter
 * @param options optional URL signing options
 * @see <a href="https://cloud.google.com/storage/docs/access-control#Signed-URLs">Signed-URLs</a>
 */
URL signUrl(BlobInfo blobInfo,long duration,TimeUnit unit,SignUrlOption... options);

Fixed version (ground truth):
/** 
 * Generates a signed URL for a blob. If you have a blob that you want to allow access to for a fixed amount of time, you can use this method to generate a URL that is only valid within a certain time period. This is particularly useful if you don't want publicly accessible blobs, but don't want to require users to explicitly log in. <p>Example usage of creating a signed URL that is valid for 2 weeks: <pre>   {@code service.signUrl(BlobInfo.builder("bucket", "name").build(), 14, TimeUnit.DAYS);}</pre>
 * @param blobInfo the blob associated with the signed URL
 * @param duration time until the signed URL expires, expressed in {@code unit}. The finest granularity supported is 1 second, finer granularities will be truncated
 * @param unit time unit of the {@code duration} parameter
 * @param options optional URL signing options
 * @see <a href="https://cloud.google.com/storage/docs/access-control#Signed-URLs">Signed-URLs</a>
 */
URL signUrl(BlobInfo blobInfo,long duration,TimeUnit unit,SignUrlOption... options);
Program: 93116
Project: 93116
Buggy source:
/** 
 * Sends a copy request. Returns a   {@link CopyWriter} object for the provided{@code CopyRequest}. If source and destination objects share the same location and storage class the source blob is copied with one request and   {@link CopyWriter#result()} immediatelyreturns, regardless of the  {@link CopyRequest#megabytesCopiedPerChunk} parameter.If source and destination have different location or storage class  {@link CopyWriter#result()}might issue multiple RPC calls depending on blob's size. <p>Example usage of copy: <pre>      {@code BlobInfo blob = service.copy(copyRequest).result();}</pre> To explicitly issue chunk copy requests use   {@link CopyWriter#copyChunk()} instead:<pre>      {@code CopyWriter copyWriter = service.copy(copyRequest);}while (!copyWriter.isDone())  copyWriter.copyChunk(); } BlobInfo blob = copyWriter.result(); } </pre>
 * @return a {@link CopyWriter} object that can be used to get information on the newly createdblob or to complete the copy if more than one RPC request is needed
 * @throws StorageException upon failure
 * @see <a href="https://cloud.google.com/storage/docs/json_api/v1/objects/rewrite">Rewrite</a>
 */
CopyWriter copy(CopyRequest copyRequest);

Fixed version (ground truth):
/** 
 * Sends a copy request. Returns a   {@link CopyWriter} object for the provided{@code CopyRequest}. If source and destination objects share the same location and storage class the source blob is copied with one request and   {@link CopyWriter#result()} immediatelyreturns, regardless of the  {@link CopyRequest#megabytesCopiedPerChunk} parameter.If source and destination have different location or storage class  {@link CopyWriter#result()}might issue multiple RPC calls depending on blob's size. <p>Example usage of copy: <pre>   {@code BlobInfo blob = service.copy(copyRequest).result();}</pre> To explicitly issue chunk copy requests use   {@link CopyWriter#copyChunk()} instead:<pre>  {@code CopyWriter copyWriter = service.copy(copyRequest);}while (!copyWriter.isDone())  copyWriter.copyChunk(); } BlobInfo blob = copyWriter.result(); } </pre>
 * @return a {@link CopyWriter} object that can be used to get information on the newly createdblob or to complete the copy if more than one RPC request is needed
 * @throws StorageException upon failure
 * @see <a href="https://cloud.google.com/storage/docs/json_api/v1/objects/rewrite">Rewrite</a>
 */
CopyWriter copy(CopyRequest copyRequest);