###############################################################################
# Copyright (c) 2008, 2019 SAP AG and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     SAP AG - initial API and implementation
#     IBM Corporation - validation of indices
###############################################################################
AbstractObjectImpl_Error_FieldContainsIllegalReference=Field ''{0}'' of ''{1}'' contains an illegal object reference: 0x{2}
AbstractObjectImpl_Error_FieldIsNotReference=Field ''{0}'' of ''{1}'' is not an object reference. It cannot have a field ''{2}''
BitOutputStream_Error_ArrayFull=Array full
ClassHistogramRecordBuilder_Error_IllegalUseOfHistogramBuilder=illegal use of class histogram record builder
DominatorTree_CalculateRetainedSizes=Calculate retained sizes
DominatorTree_CalculatingDominatorTree=Calculating Dominator Tree
DominatorTree_ComputingDominators=Computing dominators
DominatorTree_CreateDominatorsIndexFile=Create dominators index file
DominatorTree_DepthFirstSearch=Depth-first search
DominatorTree_DominatorTreeCalculation=Dominator Tree calculation
Function_Error_NeedsNumberAsInput=''{0}'' yields ''{1}'' of type ''{2}'' which is not a number and hence is not supported by the built-in function ''{3}''.
Function_ErrorNoFunction=''{0}'' yields ''{1}'' of type ''{2}'' which is not supported by the built-in function ''{3}''.
Function_unknown=unknown
GarbageCleaner_ReIndexingClasses=Re-indexing classes
GarbageCleaner_ReIndexingObjects=Re-indexing objects
GarbageCleaner_ReIndexingOutboundIndex=Re-indexing outbound index
GarbageCleaner_RemovedUnreachableObjects=Removed {0} unreachable objects using {1} bytes
GarbageCleaner_RemovingUnreachableObjects=Removing unreachable objects
GarbageCleaner_SearchingForUnreachableObjects=Searching for unreachable objects
GarbageCleaner_Writing=Writing {0}
HistogramBuilder_Error_FailedToStoreInHistogram=Failed to store class data in histogram\! Class data for this class id already stored in histogram\!
IndexReader_Error_IndexIsEmbedded=Index is embedded; stream must be set externally
IndexWriter_Error_ObjectArrayLength=Requested length of new Object[{0}] exceeds limit of {1}
IndexWriter_Error_ArrayLength=Requested length of new long[{0}] exceeds limit of {1}
IndexWriter_NotImplemented=not implemented
IndexWriter_StoredError=stored error from writer
IndexWriter_StoredException=stored IO exception from writer
MethodCallExpression_Error_MethodNotFound=Method {0}({1}) not found in object {2} of type {3}
MethodCallExpression_Error_MethodProhibited=Method {0} prohibited by method filter {1} from {2}
MultiplePathsFromGCRootsComputerImpl_FindingPaths=Finding paths
SnapshotFactoryImpl_EmptyOutbounds=Empty outbounds for index {0} address {1} type {2}
SnapshotFactoryImpl_Error_NoParserRegistered=No parser registered for file ''{0}''
SnapshotFactoryImpl_Error_OpeningHeapDump=Error opening heap dump ''{0}''. Check the error log for further details.
SnapshotFactoryImpl_Error_ReparsingHeapDump=Reparsing heap dump file due to {0}
SnapshotFactoryImpl_ErrorOpeningHeapDump=Error opening heap dump ''{0}''
SnapshotFactoryImpl_ReparsingHeapDumpAsIndexOutOfDate=Reparsing heap dump file ''{0}'' modified at {1} as it is newer than index file ''{2}'' modified at {3}
SnapshotFactoryImpl_ReparsingHeapDumpWithOutOfDateIndex=Reparsing heap dump file due to out of date index file
SnapshotFactoryImpl_IndexAddressHasSameAddressAsPrevious=Index {0} type {1} has same address {2} type {3} as previous index
SnapshotFactoryImpl_IndexAddressIsSmallerThanPrevious=Index {0} type {1} address {2} is smaller than previous address {3}
SnapshotFactoryImpl_IndexAddressFoundAtOtherID=Index {0} address {1} found at index {2} type {3} or type {4}
SnapshotFactoryImpl_ClassIDNotFound=Class id not found for index {0} address {1}, class id {2}
SnapshotFactoryImpl_ClassImplNotFound=ClassImpl not found for index {0} address {1} class id {2}
SnapshotFactoryImpl_IndexAddressNegativeArraySize=Index {0} address {1} negative size {2} type name {3}
SnapshotFactoryImpl_InvalidFirstOutbound=Object at index {0} address {1} type {2} has first outbound index {3} address {4} which is not its class index {5} address {6}
SnapshotFactoryImpl_InvalidOutbound=Object at index {0} address {1} type {2} has outbounds[{3}] with an invalid index {4}
SnapshotFactoryImpl_ClassIndexAddressNotEqualClassObjectAddress=Class index {0} address {1} not equal to class object address {2} name {3}
SnapshotFactoryImpl_ClassIndexNotEqualClassObjectID=Class index {0} address {1} not equal to class object id {2} name {3}
SnapshotFactoryImpl_ClassIndexAddressTypeIDNotEqualClassImplClassId=Class index {0} address {1} class id1 {2} different from ClassImpl class id {3} name {4}
SnapshotFactoryImpl_ClassIndexAddressNoLoaderID=Class index {0} address {1} clsId {2} no loader id {3} address {4} class name {5}
SnapshotFactoryImpl_ObjectsFoundButClassesHadObjectsAndClassesInTotal={0} objects found but {1} classes had {2} objects and class objects in total
SnapshotFactoryImpl_GCRootContextIDDoesNotMatchAddress=GC root info object id {0} context id {1} does not match address 0x{2}
SnapshotFactoryImpl_GCRootIDOutOfRange=GC root id {0} out of range [0,{1})
SnapshotFactoryImpl_GCRootIDDoesNotMatchAddress=GC root info object id {0} does not match address 0x{1}
SnapshotFactoryImpl_GCRootIDDoesNotMatchIndex=GC root info object id {0} does not match index {1}
SnapshotFactoryImpl_GCThreadIDOutOfRange=GC root thread id {0} out of range [0,{1})
SnapshotFactoryImpl_GCThreadRootIDDoesNotMatchIndex=GC root thread id {0} info object id {1} does not match index {2}
SnapshotFactoryImpl_GCThreadRootIDOutOfRange=GC root thread id {0} object id {1} out of range [0,{2})
SnapshotFactoryImpl_NoOutbounds=No outbounds for index {0} address {1} type {2}
SnapshotFactoryImpl_ObjDescClass=class {0}
SnapshotFactoryImpl_ObjDescObjType={0} {1}
SnapshotFactoryImpl_ObjDescObjTypeAddress=object type address {0}
SnapshotFactoryImpl_UnableToDeleteIndexFile=Unable to delete index file {0}
SnapshotFactoryImpl_ValidatingGCRoots=Validating GC roots
SnapshotFactoryImpl_ValidatingIndices=Validating indices
SnapshotImpl_BuildingHistogram=building histogram
SnapshotImpl_Error_DomTreeNotAvailable=Dominator tree not available. Open the Dominator Tree or delete indices and parse again.
SnapshotImpl_Error_ObjectNotFound=Object {0} not found.
SnapshotImpl_Error_ParserNotFound=Heap Parser not found: 
SnapshotImpl_Error_ReplacingNonExistentClassLoader=Replacing a non-existent class loader label.
SnapshotImpl_Error_UnknownVersion=Unknown version: {0}
SnapshotImpl_Error_UnrecognizedState=Unrecognized state : 
SnapshotImpl_Histogram=Histogram
SnapshotImpl_Label=label
SnapshotImpl_ReadingInboundReferrers=reading inbound referrers
SnapshotImpl_ReadingOutboundReferrers=reading outbound referrers
SnapshotImpl_ReopeningParsedHeapDumpFile=Reopening parsed heap dump file
SnapshotImpl_RetrievingDominators=Retrieving dominators...
ObjectArrayImpl_forArray={0} for array {1}
ObjectMarker_MarkingObjects=Marking reachable objects
ObjectMarker_ErrorMarkingObjects=Error marking reachable objects
ObjectMarker_WarningMarkingObjects=Out of memory error while marking reachable objects, continuing with remaining threads
ObjectMarker_ErrorMarkingObjectsSeeLog={0} errors marking reachable objects, check the error log for further details
Operation_Error_ArgumentOfUnknownClass=right argument to IN of unknown class {0}
Operation_Error_CannotCompare=IN: cannot compare left argument of type {0} to int[]
Operation_Error_NotInArgumentOfUnknownClass=right argument to NOT IN of unknown class {0}
Operation_Error_NotInCannotCompare=NOT IN: cannot compare left argument of type {0} to int[]
Operation_ErrorNoComparable=''{0}'' yields ''{1}'' of type ''{2}'' which does not implement Comparable and hence does not support the {3} operation.
Operation_ErrorNotNumber=''{0}'' yields ''{1}'' of type ''{2}'' which is not a number and hence does not support the {3} operation
OQLQueryImpl_CheckingClass=Checking class {0}
OQLQueryImpl_CollectingObjects=Collecting objects of classes
OQLQueryImpl_Error_CannotCalculateRetainedSet=Cannot calculate retained set on {0}
OQLQueryImpl_Error_ClassCastExceptionOccured=ClassCastException occurred. Remember: sub queries with the modifier INSTANCEOF or without the modifier OBJECTS must return only class objects.
OQLQueryImpl_Error_ElementIsNotClass=Element is not a class: Query: FROM {0}  Type: {1}
OQLQueryImpl_Error_InvalidClassNamePattern=Invalid class name pattern {0}
OQLQueryImpl_Error_MissingSnapshot=Missing snapshot
OQLQueryImpl_Error_MustReturnObjectList=Sub-Select must return an object list: {0}
OQLQueryImpl_Error_QueryCannotBeConverted=Query cannot be converted into object list: {0}
OQLQueryImpl_Error_QueryMustHaveIdenticalSelectItems=UNION query must have identical select items: {0}
OQLQueryImpl_Error_QueryMustReturnObjects=UNION query must return objects: {0}
OQLQueryImpl_Error_ResultMustReturnObjectList=Result must return an object list: Query: {0} Value: {1}
OQLQueryImpl_Errot_IsNotClass=Object 0x{0} is not a class
OQLQueryImpl_Selecting=Selecting
OQLQueryImpl_SelectingObjects=Selecting objects of classes

ParserRegistry_ErrorCompilingFileNamePattern=Error compiling file name pattern of extension {0}
ParserRegistry_ErrorWhileCreating=Error while creating {0} ''{1}''
PathExpression_Error_ArrayHasNoProperty=The array of type {0} has no property {1}
PathExpression_Error_TypeHasNoProperty=Type {0} has no property {1}
PathExpression_Error_UnknownElementInPath=Unknown element in path {0}
PositionInputStream_mark=mark
PositionInputStream_reset=reset
PositionInputStream_seek=seek
RetainedSizeCache_ErrorReadingRetainedSizes=Error reading pre-calculated retained sizes. Re-calculating...
RetainedSizeCache_Warning_IgnoreError=Ignoring error while storing calculated retained size

OQLParser_Encountered_X_at_line_X_column_X_Was_expecting_one_of_X=Encountered "{0}" at line {1}, column {2}.\nWas expecting one of: {3}
OQLParser_Missing_return_statement_in_function=Missing return statement in function

ThreadStackHelper_InvalidThread=Invalid thread {0}: {1}
ThreadStackHelper_InvalidThreadLocal=Invalid thread local {0} for thread {1} : {2}
