auphong2707/dl4se-code-review-dataset huggingface dataset:
Source:
<code>protected void commonAssignmentCheck( AnnotatedTypeMirror varType, AnnotatedTypeMirror valueType, Tree valueTree, @CompilerMessageKey String errorKey, Object... extraArgs) { replaceSpecialIntRangeAnnotations(varType); if (valueType.getKind() == TypeKind.CHAR && valueType.hasAnnotation(getTypeFactory().UNKNOWNVAL)) { valueType.addAnnotation( getTypeFactory().createIntRangeAnnotation(Range.CHAR_EVERYTHING)); } if (valueTree.getKind() == Kind.METHOD_INVOCATION && TreeUtils.isArrayscopyOfMethodInvocation((MethodInvocationTree) valueTree) && valueType.getKind() == TypeKind.ARRAY) { List<? extends ExpressionTree> args = ((MethodInvocationTree) valueTree).getArguments(); AnnotatedTypeMirror arrType = atypeFactory.getAnnotatedType(args.get(0)); if (TreeUtils.isArrayLengthAccess(args.get(1))) { valueType = arrType; } else if (atypeFactory.getAnnotatedType(args.get(1)).getAnnotation(IntVal.class) <START> != null) { <END> AnnotationMirror argType = atypeFactory.getAnnotatedType(args.get(1)).getAnnotation(IntVal.class); valueType.addAnnotation( getTypeFactory() .createArrayLenAnnotation( ValueAnnotatedTypeFactory.getIntValues(argType).stream() .map(Long::intValue) .collect(Collectors.toList()))); } } super.commonAssignmentCheck(varType, valueType, valueTree, errorKey, extraArgs); }</code><technical_language>IntVal? If is IntRange annotation, bound (from field) that</technical_language>

Target:
protected void commonAssignmentCheck( AnnotatedTypeMirror varType, AnnotatedTypeMirror valueType, Tree valueTree, @CompilerMessageKey String errorKey, Object... extraArgs) { replaceSpecialIntRangeAnnotations(varType); if (valueType.getKind() == TypeKind.CHAR && valueType.hasAnnotation(getTypeFactory().UNKNOWNVAL)) { valueType.addAnnotation( getTypeFactory().createIntRangeAnnotation(Range.CHAR_EVERYTHING)); } super.commonAssignmentCheck(varType, valueType, valueTree, errorKey, extraArgs); }
Source:
<code>public static void updateEpisodePlaybackProgress(FeedItem item, TextView txtvPos, ProgressBar episodeProgress) { FeedMedia media = item.getMedia(); episodeProgress.setVisibility(View.GONE); if (media == null) { txtvPos.setVisibility(View.GONE); return; } else { txtvPos.setVisibility(View.VISIBLE); } FeedItem.State state = item.getState(); if (state == FeedItem.State.PLAYING || state == FeedItem.State.IN_PROGRESS) { if (media.getDuration() > 0) { episodeProgress.setVisibility(View.VISIBLE); episodeProgress.setProgress((int) (((double) media .getPosition()) / media.getDuration() * 100)); txtvPos.setText(Converter.getDurationStringLong(media.getDuration() - media.getPosition())); } } else if (!media.isDownloaded()) { if (media.getSize() > 0) { txtvPos.setText(Converter.byteToString(media.getSize())); <START> } else if(media.getSize() > Integer.MIN_VALUE) { <END> txtvPos.setText("{fa-spinner}"); Iconify.addIcons(txtvPos); NetworkUtils.getFeedMediaSizeObservable(media) .subscribe(size -> { if (size > 0) { txtvPos.setText(Converter.byteToString(size)); } else { txtvPos.setText(""); } }); } else { txtvPos.setText(""); } } else { txtvPos.setText(Converter.getDurationStringLong(media.getDuration())); } }</code><technical_language>user false == media.checkedOnSizeButUnknown() instead of > MIN_VALUE? (very minor, I care little, if change about.html...)</technical_language>

Target:
public static void updateEpisodePlaybackProgress(FeedItem item, TextView txtvPos, ProgressBar episodeProgress) { FeedMedia media = item.getMedia(); episodeProgress.setVisibility(View.GONE); if (media == null) { txtvPos.setVisibility(View.GONE); return; } else { txtvPos.setVisibility(View.VISIBLE); } FeedItem.State state = item.getState(); if (state == FeedItem.State.PLAYING || state == FeedItem.State.IN_PROGRESS) { if (media.getDuration() > 0) { episodeProgress.setVisibility(View.VISIBLE); episodeProgress.setProgress((int) (((double) media .getPosition()) / media.getDuration() * 100)); txtvPos.setText(Converter.getDurationStringLong(media.getDuration() - media.getPosition())); } } else if (!media.isDownloaded()) { if (media.getSize() > 0) { txtvPos.setText(Converter.byteToString(media.getSize())); } else if(false == media.checkedOnSizeButUnknown()) { txtvPos.setText("{fa-spinner}"); Iconify.addIcons(txtvPos); NetworkUtils.getFeedMediaSizeObservable(media) .subscribe(size -> { if (size > 0) { txtvPos.setText(Converter.byteToString(size)); } else { txtvPos.setText(""); } }); } else { txtvPos.setText(""); } } else { txtvPos.setText(Converter.getDurationStringLong(media.getDuration())); } }
Source:
<code>public void testDescribeTable() throws Exception { <START> execute("CREATE TABLE tpch.test (test_bigint bigint, test_varchar varchar(255), test_vardiff varchar(15), test_double double, test_date date, test_integer integer, test_timestamp timestamp)"); <END> MaterializedResult actualColumns = computeActual("DESC test").toJdbcTypes(); MaterializedResult expectedColumns = MaterializedResult.resultBuilder(getQueryRunner().getDefaultSession(), VARCHAR, VARCHAR, VARCHAR, VARCHAR) .row("test_bigint", "bigint", "", "") .row("test_varchar", "varchar(255)", "", "") .row("test_vardiff", "varchar(15)", "", "") .row("test_double", "double", "", "") .row("test_date", "date", "", "") .row("test_integer", "integer", "", "") .row("test_timestamp", "timestamp", "", "") .build(); assertEquals(actualColumns, expectedColumns); assertUpdate("DROP TABLE test"); }</code><technical_language>Name test is generic. Call test_describe_table_all_types</technical_language>

Target:
public void testDescribeTable() throws Exception { execute("CREATE TABLE tpch.test_describe_table (c_bigint bigint, c_varchar_255 varchar(255), c_varchar_15 varchar(15), c_double double, c_date date, c_integer integer, c_timestamp timestamp)"); MaterializedResult actualColumns = computeActual("DESC test_describe_table").toJdbcTypes(); MaterializedResult expectedColumns = MaterializedResult.resultBuilder(getQueryRunner().getDefaultSession(), VARCHAR, VARCHAR, VARCHAR, VARCHAR) .row("c_bigint", "bigint", "", "") .row("c_varchar_255", "varchar(255)", "", "") .row("c_varchar_15", "varchar(15)", "", "") .row("c_double", "double", "", "") .row("c_date", "date", "", "") .row("c_integer", "integer", "", "") .row("c_timestamp", "timestamp", "", "") .build(); assertEquals(actualColumns, expectedColumns); assertUpdate("DROP TABLE test_describe_table"); }
Source:
<code>protected String[] doGetInternalRoleListOfUserWithID(String userID, String filter) throws UserStoreException { if (Boolean.parseBoolean(realmConfig.getUserStoreProperty(MULIPLE_ATTRIBUTE_ENABLE))) { String userNameAttribute = realmConfig.getUserStoreProperty(LDAPConstants.USER_NAME_ATTRIBUTE); <START> if (userNameAttribute != null && userNameAttribute.trim().length() > 0) { <END> Map<String, String> map; map = getUserPropertyValuesWithID(userID, new String[] { userNameAttribute }, null); String tempUserName = map.get(userNameAttribute); if (tempUserName != null) { userID = tempUserName; if (log.isDebugEnabled()) { log.debug("Replaced user name : " + userID + " from user property value : " + tempUserName); } } } } if (log.isDebugEnabled()) { log.debug("Retrieving internal roles for user name : " + userID + " and search filter : " + filter); } return hybridRoleManager.getHybridRoleListOfUser(userID, filter); }</code><technical_language>StringUtils.isEmpty</technical_language>

Target:
protected List<String> doGetInternalRoleListOfUserWithID(String userID, String filter) throws UserStoreException { if (Boolean.parseBoolean(realmConfig.getUserStoreProperty(MULIPLE_ATTRIBUTE_ENABLE))) { String userNameAttribute = realmConfig.getUserStoreProperty(LDAPConstants.USER_NAME_ATTRIBUTE); if (StringUtils.isNotEmpty(userNameAttribute)) { Map<String, String> map = getUserPropertyValuesWithID(userID, new String[] { userNameAttribute }, null); String tempUserName = map.get(userNameAttribute); if (tempUserName != null) { userID = tempUserName; if (log.isDebugEnabled()) { log.debug("Replaced user name : " + userID + " from user property value : " + tempUserName); } } } } if (log.isDebugEnabled()) { log.debug("Retrieving internal roles for user name : " + userID + " and search filter : " + filter); } return Arrays.asList(hybridRoleManager.getHybridRoleListOfUser(userID, filter)); }
Source:
<code><START> private void updateCertificate( <END> @NonNull String certificateId, @NonNull CertificateStatus certificateStatus) { Objects.requireNonNull(certificateId); Objects.requireNonNull(certificateStatus); Log.d(TAG, "Updating certificate status for = " + certificateId + ", to " + certificateStatus); UpdateCertificateRequest updateCertificateRequest = new UpdateCertificateRequest(); updateCertificateRequest.setCertificateId(certificateId); updateCertificateRequest.setNewStatus(certificateStatus); iot.updateCertificate(updateCertificateRequest); }</code><technical_language>Is a reason for visibility difference here</technical_language>

Target:
void updateCertificate( @NonNull String certificateId, @NonNull CertificateStatus certificateStatus) { Objects.requireNonNull(certificateId); Objects.requireNonNull(certificateStatus); Log.d(TAG, "Updating certificate status for = " + certificateId + ", to " + certificateStatus); UpdateCertificateRequest updateCertificateRequest = new UpdateCertificateRequest(); updateCertificateRequest.setCertificateId(certificateId); updateCertificateRequest.setNewStatus(certificateStatus); iot.updateCertificate(updateCertificateRequest); }
Source:
<code>public void onOpenReply(String jobId, RCDeviceListener.RCConnectivityStatus connectivityStatus, RCClient.ErrorCodes status, String text) { RCLogger.i(TAG, "onOpenReply(): id: " + jobId + ", connectivityStatus: " + connectivityStatus + ", status: " + status + ", text: " + text); cachedConnectivityStatus = connectivityStatus; if (status != RCClient.ErrorCodes.SUCCESS) { if (isServiceAttached) { listener.onInitialized(this, connectivityStatus, status.ordinal(), text); } else { RCLogger.w(TAG, "RCDeviceListener event suppressed since Restcomm Client Service not attached: onInitialized(): " + RCClient.errorText(status)); } return; } state = DeviceState.READY; <START> if (isServiceAttached) { <END> listener.onInitialized(this, connectivityStatus, RCClient.ErrorCodes.SUCCESS.ordinal(), RCClient.errorText(RCClient.ErrorCodes.SUCCESS)); } else { RCLogger.w(TAG, "RCDeviceListener event suppressed since Restcomm Client Service not attached: onInitialized(): " + RCClient.errorText(status)); } registerForPush(false); }</code><technical_language>This if leg a duplicate of previous; do need it? I missing sth</technical_language>

Target:
public void onOpenReply(String jobId, RCDeviceListener.RCConnectivityStatus connectivityStatus, RCClient.ErrorCodes status, String text) { RCLogger.i(TAG, "onOpenReply(): id: " + jobId + ", connectivityStatus: " + connectivityStatus + ", status: " + status + ", text: " + text); cachedConnectivityStatus = connectivityStatus; if (isServiceAttached) { listener.onInitialized(this, connectivityStatus, status.ordinal(), text); } else { RCLogger.w(TAG, "RCDeviceListener event suppressed since Restcomm Client Service not attached: onInitialized(): " + RCClient.errorText(status)); } if (status == RCClient.ErrorCodes.SUCCESS){ state = DeviceState.READY; } else { return; } registerForPush(false); }
Source:
<code>public File generateDocket(DocketData docketData, URI xslFileUri) throws IOException { ExportDocket exportDocket = new ExportDocket(); File file = new File("docket.pdf"); FileOutputStream fileOutputStream = new FileOutputStream(file); <START> try { <END> exportDocket.startExport(docketData, fileOutputStream, new File(xslFileUri)); } catch (IOException e) { throw new IOException(e.getMessage()); } finally { fileOutputStream.flush(); fileOutputStream.close(); } return file; }</code><technical_language>Please [try-with-resources](<LINK_0> statement instead of handling this manually</technical_language>

Target:
public File generateDocket(DocketData docketData, URI xslFileUri) throws IOException { ExportDocket exportDocket = new ExportDocket(); File file = new File("docket.pdf"); try (FileOutputStream fileOutputStream = new FileOutputStream(file)) { exportDocket.startExport(docketData, fileOutputStream, new File(xslFileUri)); } catch (IOException e) { throw new IOException(e.getMessage()); } return file; }
Source:
<code>private void deleteProjectFromWorkspace(ProjectConfig project, String workspaceId) throws ServerException, ForbiddenException { String projectName = project.getName(); <START> sendRecuestToDeleteProject(workspaceId, projectName); <END> String projectType = project.getType(); LOG.info("EVENT#project-destroyed# PROJECT#{}# TYPE#{}# WS#{}# USER#{}#", project.getName(), projectType != null ? projectType : "unknown", EnvironmentContext.getCurrent().getWorkspaceName(), EnvironmentContext.getCurrent().getUser().getName()); }</code><technical_language>This method name good typo. more it. Suggestions: doDeleteProject</technical_language>

Target:
private void deleteProjectFromWorkspace(ProjectConfig project, String workspaceId) throws ServerException, ForbiddenException { String projectName = project.getName(); doDeleteProject(workspaceId, projectName); String projectType = project.getType(); LOG.info("EVENT#project-destroyed# PROJECT#{}# TYPE#{}# WS#{}# USER#{}#", project.getName(), projectType != null ? projectType : "unknown", EnvironmentContext.getCurrent().getWorkspaceName(), EnvironmentContext.getCurrent().getUser().getName()); }
Source:
<code>protected void processStateChanged(WatchedEvent event) { LOG.info("zookeeper state changed (" + event.getState() + ")"); setCurrentState(event.getState()); if (getShutdownTrigger()) { return; } fireStateChangedEvent(event.getState()); if (!isManagingZkConnection()) { if ((event.getState() == KeeperState.SyncConnected) && (!_isNewSessionEventFired) && (!"0" .equals(getHexSessionId()))) { fireAllEvents(); _isNewSessionEventFired = true; } else if (event.getState() == KeeperState.Expired) { _isNewSessionEventFired = false; <START> } <END> return; } if (event.getState() == KeeperState.SyncConnected) { if (!_isNewSessionEventFired && !"0".equals(getHexSessionId())) { fireNewSessionEvents(); _isNewSessionEventFired = true; fireAllEvents(); } } else if (event.getState() == KeeperState.Expired) { reconnectOnExpiring(); } }</code><technical_language>If remove _isNewSessionEventFired = false; in reconnect() do code, more concise easier maintain. _isNewSessionEventFired is changed in this code block. do think? java if (event.getState() == KeeperState.SyncConnected && !_isNewSessionEventFired && !"0".equals(getHexSessionId())) { if (isManagingZkConnection()) { /* * new zookeeper instance is connected zookeeper service session * is established, session id is 0. * New session event is fired new zookeeper session receives * SyncConnected state(the zookeeper session is established). * session id is non-zero, fire new session events. */ fireNewSessionEvents(); } /* * Set true avoid firing events for session next time * SyncConnected events received. */ _isNewSessionEventFired = true; /* * this SyncConnected state, get connected zookeeper service * reconnecting session expired. previous session expired, * notify listeners changed. */ fireAllEvents(); } else if (event.getState() == KeeperState.Expired) { if (isManagingZkConnection()) { reconnectOnExpiring(); } _isNewSessionEventFired = false; }</technical_language>

Target:
protected void processStateChanged(WatchedEvent event) { LOG.info("zookeeper state changed (" + event.getState() + ")"); setCurrentState(event.getState()); if (getShutdownTrigger()) { return; } fireStateChangedEvent(event.getState()); if (event.getState() == KeeperState.SyncConnected) { if (!_isNewSessionEventFired && !"0".equals(getHexSessionId())) { fireNewSessionEvents(); _isNewSessionEventFired = true; fireAllEvents(); } } else if (event.getState() == KeeperState.Expired) { _isNewSessionEventFired = false; reconnectOnExpiring(); } }
Source:
<code><START> public Collection<AbstractResourceWrapper<?, ?>> getResourcesOfKind(String kind) { <END> return getResources().stream().filter(wrapper -> wrapper.getResource().getKind().equals(kind)) .collect(Collectors.toSet()); }</code><technical_language>For performance sake, 1) a private map (kind -> resources of kind) updated containedResources changed, scanning full map for request is costly; 2) more method getResourcesOfKindAsStream() return stream object for filtering, picking match, etc, in cases returned collection is create new stream, element, evaluate size</technical_language>

Target:
public Collection<IResourceWrapper<?, ?>> getResourcesOfKind(String kind) { return getResources().stream().filter(wrapper -> wrapper.getWrapped().getKind().equals(kind)) .collect(Collectors.toSet()); }
Source:
<code>public static URI createURIFor(IFile file) { final URI uri; String fullPath = file.getFullPath().toString(); <START> if (isAlreadyEncoded(fullPath)) { <END> uri = URI.createPlatformResourceURI(fullPath, false); } else { uri = URI.createPlatformResourceURI(fullPath, true); } return uri; }</code><technical_language>IFile's full path is encoded, if created such. Here, too, bug is higher in call stack handled instead of tackle here. This avoid slip cracks repeated elsewhere</technical_language>

Target:
public static URI createURIFor(IFile file) { return URI.createPlatformResourceURI(file.getFullPath().toString(), true); }
Source:
<code>public FlattenedNode(String node) { <START> this.node = node; <END> }</code><technical_language>null check</technical_language>

Target:
public FlattenedNode(String node) { this.node = requireNonNull(node, "node is null"); }
Source:
<code>public static MessageDigest getMessageDigest() { try { MessageDigest md = null; synchronized(digests) { while (digests.size() > 0 && md == null) { md = digests.remove(0).get(); <START> } <END> } if(md == null) md = MessageDigest.getInstance("SHA-256", mdProvider); return md; } catch(NoSuchAlgorithmException e2) { Logger.error(Node.class, "Check your JVM settings especially the JCE!" + e2); System.err.println("Check your JVM settings especially the JCE!" + e2); e2.printStackTrace(); } WrapperManager.stop(NodeInitException.EXIT_CRAPPY_JVM); throw new RuntimeException(); }</code><technical_language>This change increases worst-case complexity O(n) O(n). emulating queue behaviour reuse digest, a Queue instead? (ConcurrentLinkedQueue of special interest of asynchronous nature, allowing for a wait-free cache)</technical_language>

Target:
public static MessageDigest getMessageDigest() { try { SoftReference<MessageDigest> item = null; while (((item = digests.poll()) != null)) { MessageDigest md = item.get(); if (md != null) { return md; } } return MessageDigest.getInstance("SHA-256", mdProvider); } catch(NoSuchAlgorithmException e2) { Logger.error(Node.class, "Check your JVM settings especially the JCE!" + e2); System.err.println("Check your JVM settings especially the JCE!" + e2); e2.printStackTrace(); } WrapperManager.stop(NodeInitException.EXIT_CRAPPY_JVM); throw new RuntimeException(); }
Source:
<code>public void logout() { synchronized (Realm.class) { if (!SyncManager.getUserStore().isActive(identity)) { return; } <START> for (SyncConfiguration syncConfiguration : realms.keySet()) { <END> if (Realm.getGlobalInstanceCount(syncConfiguration) > 0) { throw new IllegalStateException("A Realm controlled by this user is still open. Close all Realms " + "before logging out: " + syncConfiguration.getPath()); } } SyncManager.getUserStore().remove(identity); for (SyncConfiguration syncConfiguration : realms.keySet()) { if (syncConfiguration.shouldDeleteRealmOnLogout()) { File realmFile = new File(syncConfiguration.getPath()); if (realmFile.exists() && !Util.deleteRealm(syncConfiguration.getPath(), realmFile.getParentFile(), realmFile.getName())) { RealmLog.error("Could not delete Realm when user logged out: " + syncConfiguration.getPath()); } } } realms.clear(); final AuthenticationServer server = SyncManager.getAuthServer(); ThreadPoolExecutor networkPoolExecutor = SyncManager.NETWORK_POOL_EXECUTOR; final Future<?> future = networkPoolExecutor.submit(new ExponentialBackoffTask<LogoutResponse>() { @Override protected LogoutResponse execute() { return server.logout(refreshToken, getAuthenticationUrl()); } @Override protected void onSuccess(LogoutResponse response) { SyncManager.notifyUserLoggedOut(SyncUser.this); } @Override protected void onError(LogoutResponse response) { RealmLog.error("Failed to log user out.\n" + response.getError().toString()); } }); } }</code><technical_language>relax this restriction cases in conversation get addressed? <LINK_0></technical_language>

Target:
public void logout() { synchronized (Realm.class) { if (!SyncManager.getUserStore().isActive(identity, authenticationUrl.toString())) { return; } SyncManager.getUserStore().remove(identity, authenticationUrl.toString()); for (SyncConfiguration syncConfiguration : realms.keySet()) { SyncSession session = SyncManager.getSession(syncConfiguration); if (session != null) { session.clearScheduledAccessTokenRefresh(); } } realms.clear(); final AuthenticationServer server = SyncManager.getAuthServer(); final Token refreshTokenToBeRevoked = refreshToken; ThreadPoolExecutor networkPoolExecutor = SyncManager.NETWORK_POOL_EXECUTOR; networkPoolExecutor.submit(new ExponentialBackoffTask<LogoutResponse>() { @Override protected LogoutResponse execute() { return server.logout(refreshTokenToBeRevoked, getAuthenticationUrl()); } @Override protected void onSuccess(LogoutResponse response) { SyncManager.notifyUserLoggedOut(SyncUser.this); } @Override protected void onError(LogoutResponse response) { RealmLog.error("Failed to log user out.\n" + response.getError().toString()); } }); } }
Source:
<code>public void execute(JobExecutionContext jobContext) throws JobExecutionException { Permissionable permissionable; JobDataMap map = jobContext.getJobDetail().getJobDataMap(); String permissionableId = (String) map.get("permissionableId"); String roleId = (String) map.get("roleId"); try { permissionable = (Permissionable) retrievePermissionable(permissionableId); Role role = (Role) roleAPI.loadRoleById(roleId); permissionAPI.cascadePermissionUnder(permissionable, role); permissionAPI.removePermissionableFromCache(permissionable.getPermissionId()); } catch (DotDataException e) { Logger.error(this, e.getMessage(), e); throw new DotRuntimeException(e.getMessage(), e); } catch (DotSecurityException e) { Logger.error(CascadePermissionsJob.class, e.getMessage(), e); throw new DotRuntimeException(e.getMessage(), e); } finally { try { HibernateUtil.closeSession(); } catch (DotHibernateException e) { Logger.warn(this, e.getMessage(), e); <START> } <END> } }</code><technical_language>Remove entire wrapper finally block</technical_language>

Target:
public void execute(JobExecutionContext jobContext) throws JobExecutionException { Permissionable permissionable; JobDataMap map = jobContext.getJobDetail().getJobDataMap(); String permissionableId = (String) map.get("permissionableId"); String roleId = (String) map.get("roleId"); try { permissionable = (Permissionable) retrievePermissionable(permissionableId); Role role = (Role) roleAPI.loadRoleById(roleId); permissionAPI.cascadePermissionUnder(permissionable, role); permissionAPI.removePermissionableFromCache(permissionable.getPermissionId()); } catch (DotDataException e) { Logger.error(this, e.getMessage(), e); throw new DotRuntimeException(e.getMessage(), e); } catch (DotSecurityException e) { Logger.error(CascadePermissionsJob.class, e.getMessage(), e); throw new DotRuntimeException(e.getMessage(), e); } }
Source:
<code><START> public boolean isFluid(@Nonnull IBlockState blockstate) <END> { return blockstate.getMaterial().isLiquid() || blockstate.getBlock() instanceof IFluidBlock; }</code><technical_language>I this private overridden</technical_language>

Target:
private boolean isFluid(@Nonnull IBlockState blockstate) { return blockstate.getMaterial().isLiquid() || blockstate.getBlock() instanceof IFluidBlock; }
Source:
<code>public void cleanup() { super.cleanup(); for (Map.Entry<Query, ValueEventListener> entry : mRefs.entrySet()) { <START> entry.getKey().removeEventListener(entry.getValue()); <END> } }</code><technical_language>This is equivalent previous behavior is call mRefs.remove()</technical_language>

Target:
public void cleanup() { super.cleanup(); final Iterator<Map.Entry<Query, ValueEventListener>> it = mRefs.entrySet().iterator(); while (it.hasNext()) { final Map.Entry<Query, ValueEventListener> entry = it.next(); entry.getKey().removeEventListener(entry.getValue()); it.remove(); } }
Source:
<code>public void testDocumentCreationFailureWithNoName() throws Exception { File archive = getArchiveFile("test-data/testNoNameCSVArchive.zip"); FileManager fm = Framework.getService(FileManager.class); Blob blob = Blobs.createBlob(archive); FileImporterContext context = FileImporterContext.builder(coreSession, blob, workspace2.getPathAsString()) .overwrite(true) .build(); fm.createOrUpdateDocument(context); DocumentModelList children = coreSession.getChildren(workspace2.getRef()); <START> assertSame(0, children.size()); <END> }</code><technical_language>assertEquals everytime compare numbers fit in a long</technical_language>

Target:
public void testDocumentCreationFailureWithNoName() throws Exception { File archive = getArchiveFile("test-data/testNoNameCSVArchive.zip"); FileManager fm = Framework.getService(FileManager.class); Blob blob = Blobs.createBlob(archive); FileImporterContext context = FileImporterContext.builder(coreSession, blob, workspace2.getPathAsString()) .overwrite(true) .build(); fm.createOrUpdateDocument(context); DocumentModelList children = coreSession.getChildren(workspace2.getRef()); assertEquals(0, children.size()); }
Source:
<code>public void initStorage(StorageFactory factory) { super.initStorage(factory); setStatus(Status.STORAGE_ASSIGNED); if(catchUpAfterStorageInit) { <START> if(log().isDebugEnabled()) { <END> log().debug("Storage assigned. Starting catch-up."); } catchUp(); } }</code><technical_language>do check level here? do pass parameters log</technical_language>

Target:
public void initStorage(StorageFactory factory) { super.initStorage(factory); setStatus(Status.STORAGE_ASSIGNED); if(catchUpAfterStorageInit) { if(log().isDebugEnabled()) { log().debug("Storage assigned. is starting to catch-up", getClass()); } catchUp(); } }
Source:
<code>protected String executeScript(String[] command) throws InterruptedException, IOException, RuntimeException { File pathToExecutable = new File(FILEPATH + command[1]); <START> System.out.println(pathToExecutable.toString()); <END> System.out.println("TEST"); isExecutable(pathToExecutable); command[1] = pathToExecutable.getAbsolutePath(); System.out.println(Arrays.toString(command)); return executeCommand(command); }</code><technical_language>unnecessary</technical_language>

Target:
protected String executeScript(String[] command) throws InterruptedException, IOException, RuntimeException { File pathToExecutable = new File(FILEPATH + command[1]); Debug.log("[Executor.executeScript] Path to executable: " + pathToExecutable.toString()); isExecutable(pathToExecutable); command[1] = pathToExecutable.getAbsolutePath(); Debug.log("[Executor.executeScript] Executing the command: " + Arrays.toString(command)); return executeCommand(command); }
Source:
<code>public boolean equals(Object object) { if (object == this) return true; if (!(object instanceof Color)) return false; Color color = (Color)object; GdkRGBA gdkRGBA = color.handle; if (handle == gdkRGBA) return true; boolean red = <START> this.getRed() == color.getRed(); <END> boolean green = this.getGreen() == color.getGreen(); boolean blue = this.getBlue() == color.getBlue(); boolean alpha = this.getAlpha() == color.getAlpha(); return device == color.device && red && green && blue && alpha; }</code><technical_language>In worst case "black white" create 4 local variables / do 4 int equality checks 4 boolean checks returning. I prefer return early, reduce overhead of equals. if(getRed() != color.getRed()) return false; etc..</technical_language>

Target:
public boolean equals(Object object) { if (object == this) return true; if (!(object instanceof Color)) return false; Color color = (Color)object; GdkRGBA gdkRGBA = color.handle; if (handle == gdkRGBA) return true; if (this.getRed() != color.getRed()) return false; if (this.getGreen() != color.getGreen()) return false; if (this.getBlue() != color.getBlue()) return false; if (this.getAlpha() != color.getAlpha()) return false; return device == color.device; }
Source:
<code>long copyStoreFiles( AdvertisedSocketAddress from, StoreId expectedStoreId, StoreFileStreams storeFileStreams ) throws StoreCopyFailedException { try { return catchUpClient.makeBlockingRequest( from, new GetStoreRequest( expectedStoreId ), new CatchUpResponseAdaptor<Long>() { private String destination; private int requiredAlignment; @Override public void onFileHeader( CompletableFuture<Long> requestOutcomeSignal, FileHeader fileHeader ) { this.destination = fileHeader.fileName(); this.requiredAlignment = fileHeader.requiredAlignment(); } @Override public boolean onFileContent( CompletableFuture<Long> signal, FileChunk fileChunk ) throws IOException { storeFileStreams.write( destination, requiredAlignment, fileChunk.bytes() ); return fileChunk.isLast(); } @Override public void onFileStreamingComplete( CompletableFuture<Long> signal, StoreCopyFinishedResponse response ) { <START> log.info( "Finished streaming %s" ); <END> signal.complete( response.lastCommittedTxBeforeStoreCopy() ); } } ); } catch ( CatchUpClientException e ) { throw new StoreCopyFailedException( e ); } }</code><technical_language>this log destination</technical_language>

Target:
long copyStoreFiles( AdvertisedSocketAddress from, StoreId expectedStoreId, StoreFileStreams storeFileStreams ) throws StoreCopyFailedException { try { return catchUpClient.makeBlockingRequest( from, new GetStoreRequest( expectedStoreId ), new CatchUpResponseAdaptor<Long>() { private String destination; private int requiredAlignment; @Override public void onFileHeader( CompletableFuture<Long> requestOutcomeSignal, FileHeader fileHeader ) { this.destination = fileHeader.fileName(); this.requiredAlignment = fileHeader.requiredAlignment(); } @Override public boolean onFileContent( CompletableFuture<Long> signal, FileChunk fileChunk ) throws IOException { storeFileStreams.write( destination, requiredAlignment, fileChunk.bytes() ); return fileChunk.isLast(); } @Override public void onFileStreamingComplete( CompletableFuture<Long> signal, StoreCopyFinishedResponse response ) { log.info( "Finished streaming" ); signal.complete( response.lastCommittedTxBeforeStoreCopy() ); } } ); } catch ( CatchUpClientException e ) { throw new StoreCopyFailedException( e ); } }
Source:
<code>public void init(String regKey, String email, String courseId) { String joinUrl = new Url(Const.ActionURIs.STUDENT_COURSE_JOIN_NEW). withRegistrationKey(regKey). withStudentEmail(email). withCourseId(courseId). <START> toString(); <END> try { registerMessage = String.format(Const.StatusMessages.UNREGISTERED_STUDENT, student.name, joinUrl); } catch (NullPointerException e) { registerMessage = ""; } }</code><technical_language>operator in front, (according style guide)? for ternary operator below</technical_language>

Target:
public void init(String regKey, String email, String courseId) { String joinUrl = new Url(Const.ActionURIs.STUDENT_COURSE_JOIN_NEW) .withRegistrationKey(regKey) .withStudentEmail(email) .withCourseId(courseId) .toString(); registerMessage = (student == null || joinUrl == null) ? "" : String.format(Const.StatusMessages.UNREGISTERED_STUDENT, student.name, joinUrl); createQuestionsWithResponses(); }
Source:
<code><START> void notifyAllChangesDownloaded(Long errorcode, String errorMessage) { <END> if (waitingForServerChanges != null) { waitingForServerChanges.handleResult(errorcode, errorMessage); } }</code><technical_language>This private put a @SuppressWarnings("unused") suppress lint warning</technical_language>

Target:
private void notifyAllChangesDownloaded(Long errorcode, String errorMessage) { WaitForServerChangesWrapper wrapper = waitingForServerChanges.get(); if (wrapper != null) { wrapper.handleResult(errorcode, errorMessage); } }
Source:
<code>public static Lifecycle multiple( Lifecycle... lifecycles ) { <START> return new CombinedLifecycle( Arrays.asList( lifecycles ) ); <END> }</code><technical_language>reuse multiple( Iterable lifecycles ) here</technical_language>

Target:
public static Lifecycle multiple( Lifecycle... lifecycles ) { return multiple( Arrays.asList( lifecycles ) ); }
Source:
<code>public CPPASTLiteralExpression(int kind, char[] value, char[] numericCompilerSuffixes) { fKind = kind; <START> setValue(kind, value); <END> fNumericCompilerSuffixes = (numericCompilerSuffixes == null) ? CharArrayUtils.EMPTY : numericCompilerSuffixes; }</code><technical_language>this equivalent to: fValue = value; fSuffix = CharArrayUtils.EMPTY</technical_language>

Target:
public CPPASTLiteralExpression(int kind, char[] value, char[] numericCompilerSuffixes) { set(kind, value); fNumericCompilerSuffixes = (numericCompilerSuffixes == null) ? CharArrayUtils.EMPTY : numericCompilerSuffixes; }
Source:
<code>private User(UUID id, byte[] initializationVector, String firstName, String lastName, String mobileNumber, UserPrivate userPrivate, MessageDestination messageDestination) { super(id); <START> this.status = Status.UNCONFIRMED; <END> this.initializationVector = initializationVector; this.firstName = firstName; this.lastName = lastName; this.mobileNumber = mobileNumber; this.setUserPrivate(userPrivate); this.messageDestination = messageDestination; }</code><technical_language>Currently UNCONFIRMED users create buddy requests. This disabled is a threat for buddies if signs a false identity invites them</technical_language>

Target:
private User(UUID id, byte[] initializationVector, String firstName, String lastName, String mobileNumber, UserPrivate userPrivate, MessageDestination messageDestination) { super(id); this.initializationVector = initializationVector; this.firstName = firstName; this.lastName = lastName; this.mobileNumber = mobileNumber; this.setUserPrivate(userPrivate); this.messageDestination = messageDestination; }
Source:
<code>static TypeSubstitution substitutionFromSuperType(ParametrizedTypeJavaType target, ParametrizedTypeJavaType source) { <START> TypeSubstitution result = target.typeSubstitution.copy(); <END> if (target.rawType != source.rawType) { TypeJavaSymbol targetSymbol = target.symbol; Type superClass = targetSymbol.superClass(); if (superClass != null && isParametrizedType(superClass)) { TypeSubstitution newSub = substitutionFromSuperType((ParametrizedTypeJavaType) superClass, source); result = combine(result, newSub); } for (Type superInterface : targetSymbol.interfaces()) { if (isParametrizedType(superInterface)) { TypeSubstitution newSub = substitutionFromSuperType((ParametrizedTypeJavaType) superInterface, source); result = combine(result, newSub); } } } else { result = combine(target.typeSubstitution, source.typeSubstitution); } return result; }</code><technical_language>matter of taste I a constructor existing substitution</technical_language>

Target:
static TypeSubstitution substitutionFromSuperType(ParametrizedTypeJavaType target, ParametrizedTypeJavaType source) { TypeSubstitution result = new TypeSubstitution(target.typeSubstitution); if (target.rawType != source.rawType) { TypeJavaSymbol targetSymbol = target.symbol; Type superClass = targetSymbol.superClass(); if (superClass != null && isParametrizedType(superClass)) { TypeSubstitution newSub = substitutionFromSuperType((ParametrizedTypeJavaType) superClass, source); result = result.combine(newSub); } for (Type superInterface : targetSymbol.interfaces()) { if (isParametrizedType(superInterface)) { TypeSubstitution newSub = substitutionFromSuperType((ParametrizedTypeJavaType) superInterface, source); result = result.combine(newSub); } } } else { result = target.typeSubstitution.combine(source.typeSubstitution); } return result; }
Source:
<code>public void testPreloadSplitsForGroupedExecution() throws Exception { ConnectorSession session = new TestingConnectorSession( new HiveSessionProperties( <START> new HiveClientConfig().setPreloadSplitsForGroupedExecution(true), <END> new OrcFileWriterConfig(), new ParquetFileWriterConfig()).getSessionProperties()); HiveSplitSource hiveSplitSource = HiveSplitSource.bucketed( session, "database", "table", TupleDomain.all(), 10, 10, new DataSize(1, MEGABYTE), new TestingHiveSplitLoader(), Executors.newFixedThreadPool(5), new CounterStat()); for (int i = 0; i < 10; i++) { hiveSplitSource.addToQueue(new TestSplit(i, OptionalInt.of(0))); assertEquals(hiveSplitSource.getBufferedInternalSplitCount(), i + 1); } final SettableFuture<List<ConnectorSplit>> splits = SettableFuture.create(); final CountDownLatch started = new CountDownLatch(1); Thread getterThread = new Thread(() -> { try { started.countDown(); List<ConnectorSplit> batch = getSplits(hiveSplitSource, OptionalInt.of(0), 10); splits.set(batch); } catch (Throwable e) { splits.setException(e); } }); getterThread.start(); try { assertTrue(started.await(1, TimeUnit.SECONDS)); MILLISECONDS.sleep(200); assertFalse(splits.isDone()); hiveSplitSource.noMoreSplits(); List<ConnectorSplit> connectorSplits = splits.get(800, MILLISECONDS); assertEquals(connectorSplits.size(), 10); for (int i = 0; i < 10; i++) { assertEquals(((HiveSplit) connectorSplits.get(i)).getSchema().getProperty("id"), Integer.toString(i)); } } finally { getterThread.interrupt(); } }</code><technical_language>Remember open issue forgot :)</technical_language>

Target:
public void testPreloadSplitsForGroupedExecution() throws Exception { ConnectorSession session = new TestingConnectorSession( new HiveSessionProperties( new HiveClientConfig().setPreloadSplitsForGroupedExecution(true), new OrcFileWriterConfig(), new ParquetFileWriterConfig()).getSessionProperties()); HiveSplitSource hiveSplitSource = HiveSplitSource.bucketed( session, "database", "table", TupleDomain.all(), 10, 10, new DataSize(1, MEGABYTE), new TestingHiveSplitLoader(), EXECUTOR, new CounterStat()); for (int i = 0; i < 10; i++) { hiveSplitSource.addToQueue(new TestSplit(i, OptionalInt.of(0))); assertEquals(hiveSplitSource.getBufferedInternalSplitCount(), i + 1); } SettableFuture<List<ConnectorSplit>> splits = SettableFuture.create(); CountDownLatch started = new CountDownLatch(1); Thread getterThread = new Thread(() -> { try { started.countDown(); List<ConnectorSplit> batch = getSplits(hiveSplitSource, OptionalInt.of(0), 10); splits.set(batch); } catch (Throwable e) { splits.setException(e); } }); getterThread.start(); try { assertTrue(started.await(1, SECONDS)); MILLISECONDS.sleep(200); assertFalse(splits.isDone()); hiveSplitSource.noMoreSplits(); List<ConnectorSplit> connectorSplits = splits.get(800, MILLISECONDS); assertEquals(connectorSplits.size(), 10); for (int i = 0; i < 10; i++) { assertEquals(((HiveSplit) connectorSplits.get(i)).getSchema().getProperty("id"), Integer.toString(i)); } } finally { getterThread.interrupt(); } }
Source:
<code>public String toString() { StringBuilder buf = new StringBuilder(64) .append(StringUtil.simpleClassName(this)) .append('@') .append(Integer.toHexString(hashCode())); if (!isDone()) { buf.append("(incomplete)"); } else { Throwable cause = cause(); if (cause != null) { buf.append("(failure: ") .append(cause) .append(')'); } else { Object result = getNow(); if (result == null) { buf.append("(success)"); } else { buf.append("(success: ") .append(result) .append(')'); } } } return buf.append(" task: ") .append(callable) <START> .append(" id: ") <END> .append(id) .append(", deadline: ") .append(deadlineNanos) .append(", period: ") .append(periodNanos) .append(')').toString(); }</code><technical_language>Nit: missing , intended</technical_language>

Target:
public String toString() { StringBuilder buf = new StringBuilder(64) .append(StringUtil.simpleClassName(this)) .append('@') .append(Integer.toHexString(hashCode())); if (!isDone()) { buf.append("(incomplete)"); } else { Throwable cause = cause(); if (cause != null) { buf.append("(failure: ") .append(cause) .append(')'); } else { Object result = getNow(); if (result == null) { buf.append("(success)"); } else { buf.append("(success: ") .append(result) .append(')'); } } } return buf.append(" task: ") .append(callable) .append(", id: ") .append(id) .append(", deadline: ") .append(deadlineNanos) .append(", period: ") .append(periodNanos) .append(')').toString(); }
Source:
<code>public ArrayList<Geometry> getGeometryObject() { List<Geometry> geometriesList = super.getGeometryObject(); <START> ArrayList<Geometry> geometriesAList = new ArrayList<>(geometriesList); <END> return geometriesAList; }</code><technical_language>simplified return new ArrayList<>(geometriesList);</technical_language>

Target:
public ArrayList<Geometry> getGeometryObject() { List<Geometry> geometriesList = super.getGeometryObject(); return new ArrayList<>(geometriesList); }
Source:
<code>public void testGetSmsCapacityOnIcc() { int[] records = new int[3]; records[2] = 500; Message fetchCapacityDone = mIccRecords.obtainMessage( IccRecords.EVENT_GET_SMS_RECORD_SIZE_DONE); AsyncResult.forMessage(fetchCapacityDone, records, null); fetchCapacityDone.sendToTarget(); <START> waitForMs(200); <END> assertEquals(mIccRecords.getSmsCapacityOnIcc(), 500); }</code><technical_language>This is flaky; opt a lock, post handler mIccRecords done</technical_language>

Target:
public void testGetSmsCapacityOnIcc() { int[] records = new int[3]; records[2] = 500; Message fetchCapacityDone = mIccRecords.obtainMessage( IccRecords.EVENT_GET_SMS_RECORD_SIZE_DONE); AsyncResult.forMessage(fetchCapacityDone, records, null); fetchCapacityDone.sendToTarget(); waitForLastHandlerAction(mIccRecords); assertEquals(mIccRecords.getSmsCapacityOnIcc(), 500); }
Source:
<code>public void setLastSnapTransferDoneTimestamp(long topologyConfigId, long ts) { CorfuStoreMetadata.Timestamp timestamp = corfuStore.getTimestamp(); long persistedTopologyConfigId = query(timestamp, LogReplicationMetadataType.TOPOLOGY_CONFIG_ID); long persistedSnapStart = query(timestamp, LogReplicationMetadataType.LAST_SNAPSHOT_STARTED); log.debug("setLastSnapTransferDone snapshotStart topologyConfigId={}, ts={}, persistedTopologyConfigID={}," + " persistedTopologyConfigID={}, persistedSnapshotStart={}", topologyConfigId, ts, persistedTopologyConfigId, persistedSnapStart); if (topologyConfigId != persistedTopologyConfigId || ts <= persistedTopologyConfigId) { log.warn("The metadata is older than the persisted one. Set snapshotStart topologyConfigId " + topologyConfigId + " ts " + ts + <START> " persisteTopologyfigID " + persistedTopologyConfigId + " persistSnapStart " + persistedSnapStart); <END> return; } TxBuilder txBuilder = corfuStore.tx(namespace); appendUpdate(txBuilder, LogReplicationMetadataType.TOPOLOGY_CONFIG_ID, topologyConfigId); appendUpdate(txBuilder, LogReplicationMetadataType.LAST_SNAPSHOT_TRANSFERRED, ts); txBuilder.commit(timestamp); log.debug("Commit. Set snapshotStart topologyConfigId " + topologyConfigId + " ts " + ts + " persisteTopologyConfigID " + persistedTopologyConfigId + " persistSnapStart " + persistedSnapStart); return; }</code><technical_language>typo: persisteTopologyfigID -> persistedTopologyConfigID, persistSnapStart -> persistedSnapStart</technical_language>

Target:
public void setLastSnapTransferDoneTimestamp(long topologyConfigId, long ts) { CorfuStoreMetadata.Timestamp timestamp = corfuStore.getTimestamp(); long persistedTopologyConfigId = query(timestamp, LogReplicationMetadataType.TOPOLOGY_CONFIG_ID); long persistedSnapStart = query(timestamp, LogReplicationMetadataType.LAST_SNAPSHOT_STARTED); log.debug("setLastSnapTransferDone snapshotStart topologyConfigId={}, ts={}, persistedTopologyConfigID={}," + " persistedTopologyConfigID={}, persistedSnapshotStart={}", topologyConfigId, ts, persistedTopologyConfigId, persistedSnapStart); if (topologyConfigId != persistedTopologyConfigId || ts <= persistedTopologyConfigId) { log.warn("The message metadata is older than the persisted one. Set snapshotStart topologyConfigId={} ts={} " + "with persistedTopologyConfigId={} persistedSnapShtart {}", topologyConfigId, ts, persistedTopologyConfigId, persistedSnapStart); return; } TxBuilder txBuilder = corfuStore.tx(namespace); appendUpdate(txBuilder, LogReplicationMetadataType.TOPOLOGY_CONFIG_ID, topologyConfigId); appendUpdate(txBuilder, LogReplicationMetadataType.LAST_SNAPSHOT_TRANSFERRED, ts); txBuilder.commit(timestamp); log.debug("Commit. Set snapshotStart topologyConfigId={} ts={} persistedTopologyConfigId={} perstedSnapStart={} ", topologyConfigId, ts , persistedTopologyConfigId, persistedSnapStart); return; }
Source:
<code>public static String u(String value) { if (value == null || value.isEmpty()) { return ""; } <START> return UriUtils.encodeQueryParam(value, "UTF-8").replace("+", "%2B"); <END> }</code><technical_language>[x] change Matcher#replaceAll. java private static final Pattern PLUS_PATTERN = Pattern.compile("\\+"); private static String extraEncodeQueryParam(String params) { return PLUS_PATTERN.matcher(params).replaceAll("%2B"); } // -> change above. return extraEncodeQueryParam(UriUtils.encodeQueryParam(value, "UTF-8"));</technical_language>

Target:
public static String u(String value) { if (value == null || value.isEmpty()) { return ""; } return extraEncodeQuery(UriUtils.encodeQueryParam(value, "UTF-8")); }
Source:
<code>public void onInit(GameInitializationEvent event) { Sponge.getCommandManager().register(this, CommandSpec.builder() .executor((src, args) -> { if (src instanceof Player) { final UUID uuid = ((Player) src).getUniqueId(); <START> if (this.activated.contains(uuid)) { <END> this.activated.remove(uuid); src.sendMessage(Text.of("You have deactivated damage source analysis.")); } else { this.activated.add(uuid); src.sendMessage(Text.of("You have activated damage source analysis.")); } } return CommandResult.success(); }) .build(), "dstest"); final DamageSource damageSource = DamageSource.builder() .type(DamageTypes.CUSTOM) .exhaustion(5) .scalesWithDifficulty() .build(); Sponge.getCommandManager().register(this, CommandSpec.builder() .executor((src, args) -> { if (src instanceof Player) { final Player player = (Player) src; player.damage(args.<Double>getOne("damage").orElse(2.0), damageSource); player.sendMessage(Text.of("You have damaged yourself with the custom damage source.")); } return CommandResult.success(); }) .arguments(GenericArguments.doubleNum(Text.of("damage"))) .build(), "dsdamage"); }</code><technical_language>If player command sources valid, return a specific type of return, right @dualspiral</technical_language>

Target:
public void onInit(GameInitializationEvent event) { Sponge.getCommandManager().register(this, CommandSpec.builder() .executor((src, args) -> { if (src instanceof Player) { final UUID uuid = ((Player) src).getUniqueId(); if (this.activated.contains(uuid)) { this.activated.remove(uuid); src.sendMessage(Text.of("You have deactivated damage source analysis.")); } else { this.activated.add(uuid); src.sendMessage(Text.of("You have activated damage source analysis.")); } return CommandResult.success(); } throw new CommandException(Text.of(TextColors.RED, "You must be a player to execute this command!")); }) .build(), "dstest"); final DamageSource damageSource = DamageSource.builder() .type(DamageTypes.CUSTOM) .exhaustion(5) .scalesWithDifficulty() .build(); Sponge.getCommandManager().register(this, CommandSpec.builder() .executor((src, args) -> { if (src instanceof Player) { final Player player = (Player) src; player.damage(args.<Double>getOne("damage").orElse(2.0), damageSource); player.sendMessage(Text.of("You have damaged yourself with the custom damage source.")); return CommandResult.success(); } throw new CommandException(Text.of(TextColors.RED, "You must be a player to execute this command!")); }) .arguments(GenericArguments.doubleNum(Text.of("damage"))) .build(), "dsdamage"); }