Source:
<code>public void onCompletion(String result, Exception exception) { callbackTracker.markOperationEnd(); ReadableStreamChannel response = null; if (result == null && exception == null) { throw new IllegalStateException("Both result and exception cannot be null"); } else if (exception == null) { try { RestMethod restMethod = restRequest.getRestMethod(); logger.trace("Forwarding of to the router", restMethod, result); switch (restMethod) { case GET: <START> RestUtils.SubResource subresource = RestUtils.getBlobSubResource(restRequest); <END> if (subresource == null || subresource.equals(RestUtils.SubResource.BlobInfo) || subresource .equals(RestUtils.SubResource.UserMetadata)) { getCallback.markStartTime(); GetOperationType getOperationType = getCallback.subResource != null ? GetOperationType.BlobInfo : GetOperationType.All; router.getBlob(result, new GetBlobOptions(getOperationType, null), getCallback); } else { switch (subresource) { case Replicas: response = getReplicasHandler.getReplicas(result, restResponseChannel); break; } } break; case HEAD: headCallback.markStartTime(); router.getBlob(result, new GetBlobOptions(GetOperationType.BlobInfo, null), headCallback); break; case DELETE: deleteCallback.markStartTime(); router.deleteBlob(result, deleteCallback); break; default: exception = new IllegalStateException("Unrecognized RestMethod: " + restMethod); } } catch (Exception e) { exception = e; } } if (response != null || exception != null) { submitResponse(restRequest, restResponseChannel, response, exception); } callbackTracker.markCallbackProcessingEnd(); }</code><technical_language>get rid of this variable getCallback.subResource</technical_language>

Target:
public void onCompletion(String result, Exception exception) { callbackTracker.markOperationEnd(); ReadableStreamChannel response = null; if (result == null && exception == null) { throw new IllegalStateException("Both result and exception cannot be null"); } else if (exception == null) { try { RestMethod restMethod = restRequest.getRestMethod(); logger.trace("Forwarding of to the router", restMethod, result); switch (restMethod) { case GET: RestUtils.SubResource subresource = RestUtils.getBlobSubResource(restRequest); if (subresource == null || subresource.equals(RestUtils.SubResource.BlobInfo) || subresource .equals(RestUtils.SubResource.UserMetadata)) { getCallback.markStartTime(); GetBlobOptions.OperationType getOperationType = subresource != null ? GetBlobOptions.OperationType.BlobInfo : GetBlobOptions.OperationType.All; router.getBlob(result, new GetBlobOptions(getOperationType, null), getCallback); } else { switch (subresource) { case Replicas: response = getReplicasHandler.getReplicas(result, restResponseChannel); break; } } break; case HEAD: headCallback.markStartTime(); router.getBlob(result, new GetBlobOptions(GetBlobOptions.OperationType.BlobInfo, null), headCallback); break; case DELETE: deleteCallback.markStartTime(); router.deleteBlob(result, deleteCallback); break; default: exception = new IllegalStateException("Unrecognized RestMethod: " + restMethod); } } catch (Exception e) { exception = e; } } if (response != null || exception != null) { submitResponse(restRequest, restResponseChannel, response, exception); } callbackTracker.markCallbackProcessingEnd(); }