<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<comments
  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  xsi:noNamespaceSchemaLocation='comments.xsd'
  name="Apache_Hadoop_Common_3.2.2_to_Apache_Hadoop_Common_3.3.1"
  jdversion="1.0.9">

<!-- This file contains comments for a JDiff report. -->
<!-- It is used only in generating the report, and does not need to ship with the final report. -->

<!-- The id attribute in an identifier element identifiers the change as noted in the report. -->
<!-- An id has the form package[.class[.[ctor|method|field].signature]], where [] indicates optional text. -->
<!-- A comment element can have multiple identifier elements, which will -->
<!-- will cause the same text to appear at each place in the report, but -->
<!-- will be converted to separate comments when the comments file is used. -->
<!-- HTML tags in the text field will appear in the report. -->
<comment>
  <identifier id="org.apache.hadoop.fs"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.Abortable"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.AbstractFileSystem"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.AbstractFileSystem.createMultipartUploader_added(org.apache.hadoop.fs.Path)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.AbstractFileSystem.methodNotSupported_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.AbstractFileSystem.openFileWithOptions_added(org.apache.hadoop.fs.Path, org.apache.hadoop.fs.impl.OpenFileParameters)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.BatchListingOperations"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.BlockLocation"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.BlockLocation.isStriped_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ByteBufferPositionedReadable"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ChecksumFileSystem"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ChecksumFileSystem.appendFile_changed(org.apache.hadoop.fs.Path)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ChecksumFileSystem.concat_changed(org.apache.hadoop.fs.Path, org.apache.hadoop.fs.Path[])"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ChecksumFileSystem.createFile_changed(org.apache.hadoop.fs.Path)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ChecksumFileSystem.createNonRecursive_added(org.apache.hadoop.fs.Path, org.apache.hadoop.fs.permission.FsPermission, java.util.EnumSet, int, short, long, org.apache.hadoop.util.Progressable)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ChecksumFileSystem.create_added(org.apache.hadoop.fs.Path, org.apache.hadoop.fs.permission.FsPermission, java.util.EnumSet, int, short, long, org.apache.hadoop.util.Progressable, org.apache.hadoop.fs.Options.ChecksumOpt)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ChecksumFileSystem.openFileWithOptions_added(org.apache.hadoop.fs.Path, org.apache.hadoop.fs.impl.OpenFileParameters)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ChecksumFileSystem.openFile_added(org.apache.hadoop.fs.Path)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.CommonConfigurationKeysPublic"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.CommonConfigurationKeysPublic.FS_CREATION_PARALLEL_COUNT"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.CommonConfigurationKeysPublic.FS_CREATION_PARALLEL_COUNT_DEFAULT"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.CommonConfigurationKeysPublic.HADOOP_KERBEROS_KEYTAB_LOGIN_AUTORENEWAL_ENABLED"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.CommonConfigurationKeysPublic.HADOOP_KERBEROS_KEYTAB_LOGIN_AUTORENEWAL_ENABLED_DEFAULT"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.CommonConfigurationKeysPublic.HADOOP_PROMETHEUS_ENABLED"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.CommonConfigurationKeysPublic.HADOOP_PROMETHEUS_ENABLED_DEFAULT"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.CommonConfigurationKeysPublic.HADOOP_TOKENS"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.CommonConfigurationKeysPublic.IPC_SERVER_REUSEADDR_DEFAULT"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.CommonConfigurationKeysPublic.IPC_SERVER_REUSEADDR_KEY"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ContentSummary"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ContentSummary.getSnapshotHeader_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ContentSummary.toSnapshot_added(boolean)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSBuilder"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataInputStream"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataInputStream.getIOStatistics_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataInputStream.readFully_added(long, java.nio.ByteBuffer)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataInputStream.read_added(long, java.nio.ByteBuffer)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStream"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStream.abort_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStream.getIOStatistics_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.getMandatoryKeys_removed()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.getOptions_removed()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.getPath_removed()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.getThisBuilder_changed()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.must_removed(java.lang.String, boolean)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.must_removed(java.lang.String, double)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.must_removed(java.lang.String, float)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.must_removed(java.lang.String, int)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.must_removed(java.lang.String, java.lang.String)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.must_removed(java.lang.String, java.lang.String[])"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.opt_removed(java.lang.String, boolean)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.opt_removed(java.lang.String, double)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.opt_removed(java.lang.String, float)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.opt_removed(java.lang.String, int)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.opt_removed(java.lang.String, java.lang.String)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSDataOutputStreamBuilder.opt_removed(java.lang.String, java.lang.String[])"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSInputStream"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FSInputStream.toString_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FileContext"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FileContext.createMultipartUploader_added(org.apache.hadoop.fs.Path)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FileContext.getServerDefaults_added(org.apache.hadoop.fs.Path)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FileContext.openFile_added(org.apache.hadoop.fs.Path)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FileSystem"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FileSystem.createDataOutputStreamBuilder_added(org.apache.hadoop.fs.FileSystem, org.apache.hadoop.fs.Path)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FileSystem.createMultipartUploader_added(org.apache.hadoop.fs.Path)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FileSystem.openFileWithOptions_added(org.apache.hadoop.fs.Path, org.apache.hadoop.fs.impl.OpenFileParameters)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FileSystem.openFileWithOptions_added(org.apache.hadoop.fs.PathHandle, org.apache.hadoop.fs.impl.OpenFileParameters)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FileSystem.openFile_added(org.apache.hadoop.fs.Path)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FileSystem.openFile_added(org.apache.hadoop.fs.PathHandle)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FilterFileSystem"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FilterFileSystem.openFileWithOptions_added(org.apache.hadoop.fs.Path, org.apache.hadoop.fs.impl.OpenFileParameters)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FilterFileSystem.openFileWithOptions_added(org.apache.hadoop.fs.PathHandle, org.apache.hadoop.fs.impl.OpenFileParameters)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FilterFileSystem.openFile_added(org.apache.hadoop.fs.Path)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FilterFileSystem.openFile_added(org.apache.hadoop.fs.PathHandle)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FsConstants"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FsConstants.VIEWFSOS_TYPE"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.FutureDataInputStreamBuilder"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.MultipartUploader"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.PartialListing"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.RawLocalFileSystem"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.RawLocalFileSystem.exists_changed(org.apache.hadoop.fs.Path)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.StreamCapabilities"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.StreamCapabilities.ABORTABLE_STREAM"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.StreamCapabilities.IOSTATISTICS"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.StreamCapabilities.PREADBYTEBUFFER"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.StreamCapabilities.READBYTEBUFFER"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ftp"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ftp.FTPFileSystem"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ftp.FTPFileSystem.DEFAULT_TIMEOUT"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.ftp.FTPFileSystem.FS_FTP_TIMEOUT"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.fs.statistics"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.ha"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.ha.HAServiceTarget"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.ha.HAServiceTarget.getHealthMonitorProxy_added(org.apache.hadoop.conf.Configuration, int, int)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.io"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.io.ArrayWritable"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.io.ArrayWritable.toString_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.io.compress"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.io.compress.CodecConstants"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.io.compress.CodecConstants.PASSTHROUGH_CODEC_EXTENSION"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.io.compress.CompressionInputStream"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.io.compress.CompressionInputStream.getIOStatistics_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.io.compress.CompressionOutputStream"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.io.compress.CompressionOutputStream.getIOStatistics_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.io.compress.PassthroughCodec"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.metrics2.lib"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.metrics2.lib.MutableRatesWithAggregation"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.metrics2.lib.MutableRatesWithAggregation.init_added(java.lang.Class, java.lang.String)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.metrics2.lib.MutableRatesWithAggregation.init_added(java.lang.String[])"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.metrics2.lib.MutableRollingAverages"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.metrics2.lib.MutableRollingAverages.setRecordValidityMs_added(long)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.metrics2.lib.MutableStat"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.metrics2.lib.MutableStat.getSnapshotTimeStamp_added()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.metrics2.lib.MutableStat.setUpdateTimeStamp_added(boolean)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.security"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.security.UserGroupInformation"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.security.UserGroupInformation.HADOOP_TOKEN"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.security.authentication.server"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.security.token"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.security.token.Token"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.security.token.Token.ctor_removed(org.apache.hadoop.security.proto.SecurityProtos.TokenProto)"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.security.token.Token.toTokenProto_removed()"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.service"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.service.CompositeService"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.service.launcher"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.service.launcher.ServiceLaunchException"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.service.launcher.ServiceLaunchException.ctor_added(int, java.lang.Throwable, java.lang.String, java.lang.Object[])"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.util"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.util.DurationInfo"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.util.OperationDuration"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.util.ReflectionUtils"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.util.ReflectionUtils.newInstance_removed(java.lang.Class, org.apache.hadoop.conf.Configuration, java.lang.Class[], java.lang.Object[])"/>
  <text>
    InsertCommentsHere
  </text>
</comment>
<comment>
  <identifier id="org.apache.hadoop.util.functional"/>
  <text>
    InsertCommentsHere
  </text>
</comment>

</comments>
