Package org.apache.uima.analysis_engine.impl

# Class ResultSpecification_impl

java.lang.Object
org.apache.uima.resource.metadata.impl.MetaDataObject_impl
org.apache.uima.analysis_engine.impl.ResultSpecification_impl

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `ResultSpecification`, `MetaDataObject`, `XMLizable`

public final class ResultSpecification_impl extends MetaDataObject_impl implements ResultSpecification
Reference implementation of `ResultSpecification`. Notes on the implementation Result Specifications (result specs, rs) are closely tied to capability specifications. They consist of instances of TypeOrFeatures and associated languages for which they are set. This impl supports removing previously added types and features for particular languages. There are two forms of the data kept: The data as it was provided to set the items in the result spec This form is used when removing previously added things The data after a type system has been provided, expanded to cover the various implied settings, due to either all Features flag on a type or the type/subtype hierarchy in the type system TypesOrFeatures are: typeXXX:FeatureYYY - specifying a particular feature of a type (Corner case: typeXXX:FeatureYYY doesn't imply there's a typeXXX allFeat nor a typeXXX w/o allFeat. typeXXX with allFeatures - a shorthand for specifying typeXXX and typeXXX:FeatureYYY for all features YYY defined for typeXXX (Corner case: excludes features ZZZ defined only in subtype of typeXXX) typeXXX without allFeatures (w/o allFeat) - specifies a type, but says nothing about the features This is specifiable in the XML. It means: The type is produced/needed but there's no information about the features that are to be produced or used containsType typeXXX returns true if typeXXX is in the RS, with or without the allFeats flag returns false if only features involving typeXXX are specified Intersection is done on fully expanded representations. There are two kinds of inheritance used Assuming there's a type system (which must be present when intersection is used), there's type/subtype This means that if a resultSpec is set for typeXXX, then the containsType(typeYYY) returns true if typeYYY is a subtype of typeXXX. This also needs to work for typeXXX:featZZZ; containsFeature(typeYYY:featZZZ) returns true if type YYY is a subtype of typeXXX. Languages have a 3 level hierarchy: x-unspecified - the same as no language being specified. If the resultSpec contains typeXXX for language x-unspecified, containsType(typeXXX, languageLLL) returns true, for any languageLLL a "base" language, without a '-', e.g. "en" a sub-language, with one or more '-', e.g., "en-us" The rules for matching languages only handle these three levels of inheritance. (Corner case: 3 or more level language hierarchy are treated as 3 level hierarchies eg. zh-Hant-HK (Traditional Chinese as used in Hong Kong) See http://www.w3.org/International/articles/language-tags/Overview.en.php ) Design considerations and assumptions Many instances of this class are made, sometimes via cloning. Most uses only use types, not type:features Most don't use languages A small subset of the possible types and type:features is specified explicitly Sometimes types and/or features are deleted. (language capability flow deletes types and/or features) Types and Features are kept on a per-language basis. Language can include a special value, x-unspecified, which "matches" any other language. Set operations among different result specs: Union: done in aggregates over result-specs derived from input capabilities of delegates Intersection: done for primitive components, over result-spec derived from output capability of the primitive remove: one type or feature (used by language capability flow) (Corner cases removing typeXXX doesn't remove typeXXX:featureYYY removing typeXXX allFeat doesn't remove typeXXX w/o allFeat (may have different languages) removing typeXXX w/o allFeat doesn't remove typeXXX allFeat The compiled version is used in containsType, containsFeature testing, and is used when computing intersection.

See Also:
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class org.apache.uima.resource.metadata.impl.MetaDataObject_impl

  `MetaDataObject_impl.MetaDataAttr, MetaDataObject_impl.SerialContext, MetaDataObject_impl.Serializer`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final List<Type>`
  `EMPTY_TYPE_LIST`
  used for empty type subsumption lists in subtype iterator

  ### Fields inherited from class org.apache.uima.resource.metadata.impl.MetaDataObject_impl

  `serialContext`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ResultSpecification_impl()`
  `ResultSpecification_impl(TypeSystem aTypeSystem)`
  Constructor specifying the type system this should always be used in preference to the 0 argument version if the type system is available.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addCapabilities(Capability[] capabilities)`
  Adds the output types and features from the specified capabilities to this `ResultSpecification`.
  `void`
  `addCapabilities(Capability[] capabilities, boolean outputs)`
  Adds either outputs or inputs from the specified capabilities to this `ResultSpecification`.
  `void`
  `addResultFeature(String aFullFeatureName)`
  Adds a Feature to this `ResultSpecification` for the language x-unspecified.
  `void`
  `addResultFeature(String aFullFeatureName, String[] aLanguageIDs)`
  Adds a Feature to this `ResultSpecification` for the specified languages.
  `void`
  `addResultType(String aTypeName, boolean aAllAnnotatorFeatures)`
  Adds an Type to this `ResultSpecification` for the language x-unspecified.
  `void`
  `addResultType(String aTypeName, boolean aAllAnnotatorFeatures, String[] aLanguageIDs)`
  Adds an Type to this `ResultSpecification` for the specified languages.
  `void`
  `addResultTypeOrFeature(TypeOrFeature aTypeOrFeature)`
  Adds a Result Type or Feature to this `ResultSpecification` for the language x-unspecified.
  `void`
  `addResultTypeOrFeature(TypeOrFeature tof, String[] languages)`
  Adds a Result Type or Feature to this `ResultSpecification` for the specified languages.
  `Object`
  `clone()`
  returns a clone of the `ResultSpecification` object.
  `void`
  `compile(TypeSystem aTypeSystem)`
  Deprecated.
  no longer needed, remove call to this
  `boolean`
  `containsFeature(String aFullFeatureName)`
  Determines whether this `ResultSpecification` contains the specified Feature for the language x-unspecified.
  `boolean`
  `containsFeature(String aFullFeatureName, String aLanguage)`
  Determines whether this `ResultSpecification` contains the specified Feature for the specified language.
  `boolean`
  `containsType(String aTypeName)`
  Determines whether this `ResultSpecification` contains the specified Type for the language x-unspecified.
  `boolean`
  `containsType(String aTypeName, String aLanguage)`
  Determines whether this `ResultSpecification` contains the specified Type for the specified language.
  `boolean`
  `equals(Object aObj)`
  Determines if this object is equal to another.
  `TypeOrFeature[]`
  `getResultTypesAndFeatures()`
  Retrieves the Types and Features that the AnalysisEngine or Annotator is requested to produce, for all languages.
  `TypeOrFeature[]`
  `getResultTypesAndFeatures(String language)`
  Retrieves the Types and Features that the AnalysisEngine or Annotator is requested to produce for the specified language.
  `TypeSystem`
  `getTypeSystem()`
  get the type system associated with this result specification.
  `protected XmlizationInfo`
  `getXmlizationInfo()`
  To be implemented by subclasses to return information describing how to represent this object in XML.
  `int`
  `hashCode()`
  Gets the hash code for this object.
  `void`
  `removeTypeOrFeature(TypeOrFeature tof)`
  removes the specified TypeOrFeature from this `ResultSpecification`.
  `void`
  `setResultTypesAndFeatures(TypeOrFeature[] aTypesAndFeatures)`
  Sets the Types and Features that the AnalysisEngine or Annotator is requested to produce for the language x-unspecified, and removes all other type or feature information, that may be previously present (e.g., for other languages)
  `void`
  `setResultTypesAndFeatures(TypeOrFeature[] aTypesAndFeatures, String[] aLanguageIDs)`
  Sets the Types and Features that the AnalysisEngine or Annotator is requested to produce for the specified languages, and removes all other type or feature information, that may be previously present (e.g., for other languages).
  `void`
  `setTypeSystem(TypeSystem ts)`
  set the type system associated with this result specification.
  `String`
  `toString()`
  Dump this metadata object's attributes and values to a String.

  ### Methods inherited from class org.apache.uima.resource.metadata.impl.MetaDataObject_impl

  `buildFromXMLElement, buildFromXMLElement, getAdditionalAttributes, getAttributeClass, getAttributeValue, getInfoset, getMatchingNode, getPropertyDescriptors, getPropertyXmlInfo, getRelativePathBase, getSerialContext, getSourceUrl, getSourceUrlString, getWrapperClass, getXMLAttributes, isModifiable, listAttributes, readArrayPropertyValueFromXMLElement, readMapPropertyFromXml, readPropertyValueFromXMLElement, readUnknownPropertyValueFromXMLElement, resolveSettings, setAttributeValue, setInfoset, setSourceUrl, setSourceUrlIfNull, toXML, toXML, toXML, toXML, valueIsNullOrEmptyArray, writeArrayPropertyAsElement, writeMapPropertyToXml, writePropertyAsElement`

  ### Methods inherited from class java.lang.Object

  `finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface org.apache.uima.util.XMLizable

  `buildFromXMLElement, buildFromXMLElement, toXML, toXML, toXML, toXML`

- ## Field Details

  - ### EMPTY_TYPE_LIST

    public static final List<Type> EMPTY_TYPE_LIST
    used for empty type subsumption lists in subtype iterator

- ## Constructor Details

  - ### ResultSpecification_impl

    public ResultSpecification_impl()

  - ### ResultSpecification_impl

    public ResultSpecification_impl(TypeSystem aTypeSystem)
    Constructor specifying the type system this should always be used in preference to the 0 argument version if the type system is available. Otherwise, the type system *must* be set via a method call prior to querying the result spec, with the one exception of the method getResultTypesAndFeaturesWithoutCompiling
    Parameters:
      `aTypeSystem` - -

- ## Method Details

  - ### getResultTypesAndFeatures

    public TypeOrFeature[] getResultTypesAndFeatures()
    Description copied from interface: `ResultSpecification`
    Retrieves the Types and Features that the AnalysisEngine or Annotator is requested to produce, for all languages.

    The set of types and features returned are just the ones that have been explicitly set or added to the ResultSpecification, and doesn't include any derived subtypes, even if this ResultSpecification has been compiled.

    Specified by:
      `getResultTypesAndFeatures` in interface `ResultSpecification`
    Returns:
      an array of `TypeOrFeature` objects that define the result types and features for all languages.
    See Also:
      - `ResultSpecification.getResultTypesAndFeatures()`

  - ### getResultTypesAndFeatures

    public TypeOrFeature[] getResultTypesAndFeatures(String language)
    Description copied from interface: `ResultSpecification`
    Retrieves the Types and Features that the AnalysisEngine or Annotator is requested to produce for the specified language. See the class comment for how languages are compared.

    The set of types and features returned are just the ones that have been explicitly set or added to the ResultSpecification, and doesn't include any derived subtypes, even if this ResultSpecification has been compiled.

    Specified by:
      `getResultTypesAndFeatures` in interface `ResultSpecification`
    Parameters:
      `language` - the language specifier
    Returns:
      an array of `TypeOrFeature` objects that define the result types and features for the specified language.
    See Also:
      - `May contain near-duplicates - same type, but with different settings of allannotatorfeatures (only if they have different languages)`

  - ### setResultTypesAndFeatures

    public void setResultTypesAndFeatures(TypeOrFeature[] aTypesAndFeatures)
    Description copied from interface: `ResultSpecification`
    Sets the Types and Features that the AnalysisEngine or Annotator is requested to produce for the language x-unspecified, and removes all other type or feature information, that may be previously present (e.g., for other languages)
    Specified by:
      `setResultTypesAndFeatures` in interface `ResultSpecification`
    Parameters:
      `aTypesAndFeatures` - an array of `TypeOrFeature` objects that define the result types and features for the language x-unspecified.
    See Also:
      - `ResultSpecification.setResultTypesAndFeatures(org.apache.uima.analysis_engine.TypeOrFeature[])`

  - ### setResultTypesAndFeatures

    public void setResultTypesAndFeatures(TypeOrFeature[] aTypesAndFeatures, String[] aLanguageIDs)
    Description copied from interface: `ResultSpecification`
    Sets the Types and Features that the AnalysisEngine or Annotator is requested to produce for the specified languages, and removes all other type or feature information, that may be previously present (e.g., for other languages).
    Specified by:
      `setResultTypesAndFeatures` in interface `ResultSpecification`
    Parameters:
      `aTypesAndFeatures` - an array of `TypeOrFeature` objects that define the result types and features for the specified languages.
      `aLanguageIDs` - an array of ISO language identifiers.
    See Also:
      - `ResultSpecification.setResultTypesAndFeatures(org.apache.uima.analysis_engine.TypeOrFeature[], java.lang.String[])`

  - ### addResultTypeOrFeature

    public void addResultTypeOrFeature(TypeOrFeature aTypeOrFeature)
    Description copied from interface: `ResultSpecification`
    Adds a Result Type or Feature to this `ResultSpecification` for the language x-unspecified. If there is already a same-named TypeOrFeature object contained in the result spec, its language specification for this ToF will be replaced with x-unspecified, and its allAnnotatorFeatures flag will be replaced with the parameter's.
    Specified by:
      `addResultTypeOrFeature` in interface `ResultSpecification`
    Parameters:
      `aTypeOrFeature` - the Type or Feature to add for the language x-unspecified
    See Also:
      - `ResultSpecification.addResultTypeOrFeature(org.apache.uima.analysis_engine.TypeOrFeature)`

  - ### addResultTypeOrFeature

    public void addResultTypeOrFeature(TypeOrFeature tof, String[] languages)
    Description copied from interface: `ResultSpecification`
    Adds a Result Type or Feature to this `ResultSpecification` for the specified languages. If there is already a same-named TypeOrFeature object contained in the result spec, the language specification for this ToF will be replaced with the specified languages, and its allAnnotatorFeatures flag will be replaced with the parameter's. If null is passed in for the aLanguageIDs, this is treated as if one language, x-unspecified, was given.
    Specified by:
      `addResultTypeOrFeature` in interface `ResultSpecification`
    Parameters:
      `tof` - the Type or Feature to add for the specified languages
      `languages` - an array of ISO language identifiers.
    See Also:
      - `Note: Javadoc makes assumption that there's one tof per type, but this design allows 2 (one with allAnnotatorFeatures set or not).`

  - ### addResultType

    public void addResultType(String aTypeName, boolean aAllAnnotatorFeatures)
    Description copied from interface: `ResultSpecification`
    Adds an Type to this `ResultSpecification` for the language x-unspecified. If the current Type is already contained in the result spec, the language specification for this Type will be replaced with x-unspecified, and its allAnnotatorFeatures flag will be replaced with the parameter's.
    Specified by:
      `addResultType` in interface `ResultSpecification`
    Parameters:
      `aTypeName` - the name of the Type to add for the language x-unspecified
      `aAllAnnotatorFeatures` - whether all features of this type should also be produced
    See Also:
      - `ResultSpecification.addResultType(java.lang.String, boolean)`

  - ### addResultType

    public void addResultType(String aTypeName, boolean aAllAnnotatorFeatures, String[] aLanguageIDs)
    Description copied from interface: `ResultSpecification`
    Adds an Type to this `ResultSpecification` for the specified languages. If the given Type is already contained in the result spec, the languages specified will be added to those already associated with the Type in this ResultSpec. The given type's allAnnotatorFeatures is logically "or"ed with any existing value. If null is passed in for the aLanguageIDs, this is treated as if one language, x-unspecified, was given.
    Specified by:
      `addResultType` in interface `ResultSpecification`
    Parameters:
      `aTypeName` - the name of the Type to add for the specified languages
      `aAllAnnotatorFeatures` - whether all features of this type should also be produced
      `aLanguageIDs` - an array of ISO language identifiers.
    See Also:
      - `ResultSpecification.addResultType(java.lang.String, boolean, java.lang.String[])`

  - ### addResultFeature

    public void addResultFeature(String aFullFeatureName)
    Description copied from interface: `ResultSpecification`
    Adds a Feature to this `ResultSpecification` for the language x-unspecified. If the given Type is already contained in the result spec, the languages associated with that type will be replaced by x-unspecified.
    Specified by:
      `addResultFeature` in interface `ResultSpecification`
    Parameters:
      `aFullFeatureName` - the fully-qualified name of the Feature to add for the language x-unspecified
    See Also:
      - `ResultSpecification.addResultFeature(java.lang.String)`

  - ### addResultFeature

    public void addResultFeature(String aFullFeatureName, String[] aLanguageIDs)
    Description copied from interface: `ResultSpecification`
    Adds a Feature to this `ResultSpecification` for the specified languages. If the current Feature is already contained in the result spec, the language specification for this Feature will be augmented (added to) with the specified languages. If null is passed in for the aLanguageIDs, this is treated as if one language, x-unspecified, was given.
    Specified by:
      `addResultFeature` in interface `ResultSpecification`
    Parameters:
      `aFullFeatureName` - the fully-qualified name of the Feature to add for the specified languages
      `aLanguageIDs` - an array of ISO language identifiers.
    See Also:
      - `ResultSpecification.addResultFeature(java.lang.String, java.lang.String[])`

  - ### compile

    @Deprecated public void compile(TypeSystem aTypeSystem)
    Deprecated.
    no longer needed, remove call to this
    Description copied from interface: `ResultSpecification`
    Compiles this `ResultSpecification` using a specific `TypeSystem`. The result is cached and used by the `ResultSpecification.containsType(String)` and `ResultSpecification.containsFeature(String)` methods to properly consider the inheritance of types and to restrict allAnnotatorFeatures to just those features defined in the type system when this `ResultSpecification` contains Types with `allAnnotatorFeatures` set to true.

    This method is called automatically internally when needed. Framework code, Annotators and Applications do not need to call it.

    Specified by:
      `compile` in interface `ResultSpecification`
    Parameters:
      `aTypeSystem` - the Type System used to determine which features belong to each Type
    See Also:
      - `ResultSpecification.compile(org.apache.uima.cas.TypeSystem)`

  - ### containsType

    public boolean containsType(String aTypeName)
    Description copied from interface: `ResultSpecification`
    Determines whether this `ResultSpecification` contains the specified Type for the language x-unspecified. If a type system is available to the result specification, a type will be considered to be contained in the result spec, also, if it is a subtype of the types originally specified to be in the result specification.
    Specified by:
      `containsType` in interface `ResultSpecification`
    Parameters:
      `aTypeName` - the name of the type
    Returns:
      true if and only if this `ResultSpecification` contains the type with name `aTypeName`.
    See Also:
      - `ResultSpecification.containsType(java.lang.String)`

  - ### containsType

    public boolean containsType(String aTypeName, String aLanguage)
    Description copied from interface: `ResultSpecification`
    Determines whether this `ResultSpecification` contains the specified Type for the specified language. A type is considered to be contained in the result spec, also, if it is a subtype of the types originally specified to be in the result specification for this language.
    Specified by:
      `containsType` in interface `ResultSpecification`
    Parameters:
      `aTypeName` - the name of the type
      `aLanguage` - the language to search for. A null value or the value x-unspecified for this argument only matches ResultSpecifications having x-unspecified as their type. A language value that is contained within a language in the ResultSpecification is considered to match. In particular: Language ResultSpecification Result x-unspecified x-unspecified match x-unspecified en no match en x-unspecified match en en-us no match en-us en match
    Returns:
      true if and only if this `ResultSpecification` contains the type with name `aTypeName` for a matching language.
    See Also:
      - `method: for each type (with all-feat, without all-feat): for each type, and supertypes check if one of the resultSpec languages subsumes the given language. if so, return true return false; But: cache this: key = int[2]: type#, langi#, value = true/false`

  - ### containsFeature

    public boolean containsFeature(String aFullFeatureName)
    Description copied from interface: `ResultSpecification`
    Determines whether this `ResultSpecification` contains the specified Feature for the language x-unspecified. Feature names are fully qualified, consisting of the type name plus the feature-of-that-type name. A feature ttt:fff is contained in the result spec if that fff is specified for type ttt or any supertype of ttt in the result spec. A feature can be specified in the result spec explicitly or by specifying a type or supertype of the feature's type having the allAnnotatorFeatures flag set.
    Specified by:
      `containsFeature` in interface `ResultSpecification`
    Parameters:
      `aFullFeatureName` - the fully-qualified name of the feature, in the form MyTypeName:MyFeatureName.
    Returns:
      true if and only if this `ResultSpecification` contains the feature with name `aFullFeatureName`.
    See Also:
      - `ResultSpecification.containsFeature(java.lang.String)`

  - ### containsFeature

    public boolean containsFeature(String aFullFeatureName, String aLanguage)
    Description copied from interface: `ResultSpecification`
    Determines whether this `ResultSpecification` contains the specified Feature for the specified language. Feature names are fully qualified, consisting of the type name plus the feature-of-that-type name. A feature ttt:fff is contained in the result spec if that fff is specified for type ttt or any supertype of ttt in the result spec. A feature can be specified in the result spec explicitly or by specifying a type or supertype of the feature's type having the allAnnotatorFeatures flag set.
    Specified by:
      `containsFeature` in interface `ResultSpecification`
    Parameters:
      `aFullFeatureName` - the fully-qualified name of the feature, in the form MyTypeName:MyFeatureName.
      `aLanguage` - the language to search for. A null value or the value x-unspecified for this argument only matches ResultSpecifications having x-unspecified as their type. A language value that is contained within a language in the ResultSpecification is considered to match. In particular: Language ResultSpecification Result x-unspecified x-unspecified match x-unspecified en no match en x-unspecified match en en-us no match en-us en match
    Returns:
      true if and only if this `ResultSpecification` contains the feature with name `aFullFeatureName` for a matching language.
    See Also:
      - `ResultSpecification.containsFeature(java.lang.String,java.lang.String)`

  - ### getXmlizationInfo

    protected XmlizationInfo getXmlizationInfo()
    Description copied from class: `MetaDataObject_impl`
    To be implemented by subclasses to return information describing how to represent this object in XML.
    Specified by:
      `getXmlizationInfo` in class `MetaDataObject_impl`
    Returns:
      information defining this object's XML representation
    See Also:
      - `MetaDataObject_impl.getXmlizationInfo()`

  - ### addCapabilities

    public void addCapabilities(Capability[] capabilities)
    Description copied from interface: `ResultSpecification`
    Adds the output types and features from the specified capabilities to this `ResultSpecification`.

    If a Type being added is already contained in the ResultSpecification, the languages from the Capabilities entry for this type will be added to those already associated with the Type in this ResultSpec. The given capability instance's allAnnotatorFeatures is logically "or"ed with any existing value.

    Specified by:
      `addCapabilities` in interface `ResultSpecification`
    Parameters:
      `capabilities` - capabilities to add
    See Also:
      - `ResultSpecification.addCapabilities(org.apache.uima.resource.metadata.Capability[])`

  - ### addCapabilities

    public void addCapabilities(Capability[] capabilities, boolean outputs)
    Description copied from interface: `ResultSpecification`
    Adds either outputs or inputs from the specified capabilities to this `ResultSpecification`.

    If a Type being added is already contained in the ResultSpecification, the languages from the Capabilities entry for this type will be added to those already associated with the Type in this ResultSpec. The given capability instance's allAnnotatorFeatures is logically "or"ed with any existing value.

    Specified by:
      `addCapabilities` in interface `ResultSpecification`
    Parameters:
      `capabilities` - capabilities to add
      `outputs` - true to add the output types/features to this ResultSpecification, false to add the input types/features to this ResultSpecification.
    See Also:
      - `ResultSpecification.addCapabilities(org.apache.uima.resource.metadata.Capability[], boolean)`

  - ### removeTypeOrFeature

    public void removeTypeOrFeature(TypeOrFeature tof)
    Description copied from interface: `ResultSpecification`
    removes the specified TypeOrFeature from this `ResultSpecification`.
    Specified by:
      `removeTypeOrFeature` in interface `ResultSpecification`
    Parameters:
      `tof` - the Type or Feature to remove
    See Also:
      - `This removes the type or feature for all languages. Beware: there are two possible ToFs one with allFeatures set or not (if they have different languages).`

  - ### clone

    public Object clone()
    returns a clone of the `ResultSpecification` object.
    Specified by:
      `clone` in interface `MetaDataObject`
    Specified by:
      `clone` in interface `ResultSpecification`
    Overrides:
      `clone` in class `MetaDataObject_impl`
    Returns:
      Object copy of the current object
    See Also:
      - `multi-core: could be cloning while another thread is modifying?`

  - ### setTypeSystem

    public void setTypeSystem(TypeSystem ts)
    Description copied from interface: `ResultSpecification`
    set the type system associated with this result specification. It is used to augment any types with their subtypes
    Specified by:
      `setTypeSystem` in interface `ResultSpecification`
    Parameters:
      `ts` - the CAS Type System

  - ### getTypeSystem

    public TypeSystem getTypeSystem()
    Description copied from interface: `ResultSpecification`
    get the type system associated with this result specification.
    Specified by:
      `getTypeSystem` in interface `ResultSpecification`
    Returns:
      the type system

  - ### toString

    public String toString()
    Description copied from class: `MetaDataObject_impl`
    Dump this metadata object's attributes and values to a String. This is useful for debugging.
    Overrides:
      `toString` in class `MetaDataObject_impl`

  - ### equals

    public boolean equals(Object aObj)
    Description copied from class: `MetaDataObject_impl`
    Determines if this object is equal to another. Two MetaDataObjects are equivalent if they share the same attributes and the same values for those attributes.
    Specified by:
      `equals` in interface `MetaDataObject`
    Overrides:
      `equals` in class `MetaDataObject_impl`
    Parameters:
      `aObj` - object with which to compare this object
    Returns:
      true if and only if this object is equal to `aObj`

  - ### hashCode

    public int hashCode()
    Description copied from class: `MetaDataObject_impl`
    Gets the hash code for this object. The hash codes of two NameClassPairs `x` and `y` must be equal if `x.equals(y)` returns true;
    Overrides:
      `hashCode` in class `MetaDataObject_impl`
    Returns:
      the hash code for this object