|
Media Authoring with Java API |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object tv.amwa.maj.entity.InterchangeObject tv.amwa.maj.entity.Header
@AAFClass(uuid1=218169601, uuid2=257, uuid3=12032, uuid4={6,14,43,52,2,6,1,1}, definedName="Header", description="The Header class provides file-wide information and indexes.") public class Header
Implements file-wide information and indexes. An AAF file shall have exactly one header object.
THE COMMENTS FOR THIS CLASS ARE INCOMPLETE.
Nested Class Summary | |
---|---|
static class |
Header.ContentXMLHandler
|
static class |
Header.DescriptiveSchemesXMLHandler
|
static class |
Header.HeaderDictionaryXMLHandler
|
static class |
Header.IdentificationListXMLHandler
|
static class |
Header.XMLHandler
|
Nested classes/interfaces inherited from class tv.amwa.maj.entity.InterchangeObject |
---|
InterchangeObject.InterchangeObjectXMLHandler |
Field Summary | |
---|---|
static String |
HEADER_TAG
|
Fields inherited from interface tv.amwa.maj.iface.Header |
---|
OBJECTMODELVERSION_DEFAULT |
Constructor Summary | |
---|---|
Header()
Creates and initializes a header object, the root object of any AAF persistent unit such as a file or database representation. |
Method Summary | |
---|---|
void |
addDescriptiveScheme(AUID descriptiveSchemeID)
Adds the given descriptive metadata scheme identifier to the set of schemes of this header, which identify the descriptive metadata schemes used in the file. |
void |
addEssenceData(EssenceData essenceData)
Adds an essence data item to the content storage of this header. |
void |
addMob(Mob mob)
Adds a mob to the content storage of this header. |
void |
appendIdentification(Identification ident)
Appends the given identification to the list of identifications of this header, which each identify an application that created or modified the file. |
void |
appendXMLChildren(Node parent)
Append child elements to the given parent node to serialize the value of an object to an XML fragment. |
Header |
clone()
Creates a cloned copy of this entity. |
int |
countDescriptiveSchemes()
Returns the total number of descriptive metadata schemes present for this header, which identify the descriptive metadata schemes used in the file. |
int |
countEssenceContainers()
Returns the total number of essence containers of this header, which identify the internal essence containers used in the file. |
int |
countEssenceData()
Returns the total number of essence data items stored in the content storage of this header. |
int |
countIdentifications()
Returns the number of identifications in the header, which each identify an application that created or modified the file. |
int |
countMobs(MobKind mobKind)
Returns the number of matches for the given mob kind within the content storage of this header. |
Set<EssenceData> |
enumEssenceData()
Returns a set of all essence data stored in the content storage of this header. |
ByteOrder |
getByteOrder()
|
ContentStorage |
getContentStorage()
Returns the content storage of this header. |
Set<AUID> |
getDescriptiveSchemes()
Returns the set of descriptive schemes of this header, which identify the descriptive metadata schemes used in the file. |
Dictionary |
getDictionary()
Returns the dictionary of this header, which contains all the definitions of the file. |
Set<AUID> |
getEssenceContainers()
Returns the set of essence containers of this header, which identify the internal essence containers used in the file. |
Set<EssenceData> |
getEssenceData(CriteriaType mediaCriteria)
Returns a set of essence data from the content storage of this header that matches the given media criteria. |
VersionType |
getFileRevision()
Return the file version property of the header. |
Identification |
getGeneration()
Gets the generation of this object, which identifies when this object was created or last modified. |
AUID |
getGenerationAUID()
Shortcut to get the AUID of the identification representing this object's generation. |
Identification |
getIdentificationAt(int index)
Retrieves the identification at the given index through the list of identifications of this header, which each identify an application that created or modified the file. |
List<Identification> |
getIdentifications()
Returns the list of identifications contained within this header, which each identify an application that created or modified the file. |
Identification |
getLastIdentification()
Returns the identification of the last application that modified the file. |
TimeStamp |
getLastModified()
Return the last modified time stamp of this header, which specifies the time and date that this file was last modified. |
ProductVersion |
getMajApiVersion()
Return the version of the MAJ API currently running on this machine, which implements these interfaces. |
Set<Mob> |
getMobs(SearchCriteria searchCriteria)
Returns a set of mobs stored in the content storage of this header that match the given search criteria . |
int |
getObjectModelVersion()
|
AUID |
getOperationalPattern()
Returns the identifier of the MXF operational pattern or AAF protocol that the file of this header complies with. |
Mob |
getPrimaryMob()
Returns the primary mob for the file of this header, which specifies the mob that the application treats as the default. |
boolean |
isDescriptiveSchemePresent(AUID descriptiveSchemeId)
Returns true if the descriptive metadata scheme with
the given identifier is in set of schemes of this header; otherwise false . |
boolean |
isEssenceContainerPresent(AUID essenceContainerID)
Returns true if the essence containers with the given
identifier is present for this header; otherwise false . |
boolean |
isEssenceDataPresent(MobID fileMobID)
Returns true if essence data identified by the
given mob id is present in the content storage of this header. |
EssenceData |
lookupEssenceData(MobID mobID)
Looks up and returns the essence data that matches the given mob id from the content storage of this header. |
Identification |
lookupIdentification(AUID generation)
Returns the identification that matches the given generation identifier from the list of identifications of applications that created or modified the file of this header. |
Mob |
lookupMob(MobID mobID)
Returns the mob that matches the given mob id stored in the content storage of this header. |
void |
removeDescriptiveScheme(AUID descriptiveSchemeID)
Removes the given descriptive metadata scheme identifier from the set of schemes of this header, which identify the descriptive metadata schemes used in the file. |
void |
removeEssenceData(EssenceData essenceData)
Removes the given essence data item from the content storage of this header. |
void |
removeMob(Mob mob)
Removes the given mob from the content storage of this header. |
void |
setObjectModelVersion(Integer objectModelVersion)
|
void |
setOperationalPattern(AUID operationalPatternID)
Sets the MXF operational pattern or AAF protocol that the file of this header complies with. |
void |
setPrimaryMob(Mob primaryMob)
Sets the primary mob for the file of the header, which specifies the mob that the application treats as the default. |
void |
setPropertiesFromInterface(Header castFrom)
|
void |
updateEssenceContainers()
Ensures that the contents of the essence containers property is in sync with the file's metadata. |
Methods inherited from class tv.amwa.maj.entity.InterchangeObject |
---|
castFromInterface, countProperties, createOptionalPropertyValue, disableGenerationTracking, enableGenerationTracking, getDefinition, getProperties, getPropertyValue, isGenerationTracked, isPropertyPresent, omitOpionalProperty, registerImplementation, setPropertiesFromInterface, setPropertyValue, toString |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface tv.amwa.maj.iface.InterchangeObject |
---|
countProperties, createOptionalPropertyValue, disableGenerationTracking, enableGenerationTracking, getDefinition, getProperties, getPropertyValue, isGenerationTracked, isPropertyPresent, omitOpionalProperty, setPropertyValue |
Methods inherited from interface tv.amwa.maj.entity.MAJCommon |
---|
equals, hashCode, toString |
Field Detail |
---|
public static final String HEADER_TAG
Constructor Detail |
---|
public Header()
Creates and initializes a header object, the root object of any AAF persistent unit such as a file or database representation.
Method Detail |
---|
public final void setPropertiesFromInterface(Header castFrom)
InterchangeObject.setPropertiesFromInterface(tv.amwa.maj.iface.InterchangeObject)
public void addDescriptiveScheme(AUID descriptiveSchemeID) throws NullPointerException
Header
Adds the given descriptive metadata scheme identifier to the set of schemes of this header, which identify the descriptive metadata schemes used in the file. If the optional set of descriptive metadata schemes property is omitted, it will become present after successful completion of this method.
addDescriptiveScheme
in interface Header
descriptiveSchemeID
- Descriptive metadata scheme identifier to add to the set of
this header.
NullPointerException
- The given descriptive metadata scheme identifier is null
.DescriptiveFramework
,
DescriptiveClip
public void addEssenceData(EssenceData essenceData) throws DuplicateMobIDException, NullPointerException
Header
Adds an essence data item to the content storage of this header.
addEssenceData
in interface Header
essenceData
- Essence data to add to the content storage of this header.
DuplicateMobIDException
- Essence data with the same mob id is already contained
in the content storage of this header.
NullPointerException
- The given essence data item is null
.Header.getContentStorage()
,
ContentStorage.addEssenceData(EssenceData)
public void addMob(Mob mob) throws NullPointerException, DuplicateMobIDException
Header
Adds a mob to the content storage of this header.
addMob
in interface Header
mob
- Mob to add to the content storage of this header.
NullPointerException
- The given mob is null
.
DuplicateMobIDException
- A mob with the same mob id is already
contained in the content storage of this header.Header.getContentStorage()
,
ContentStorage.addMob(Mob)
public void appendIdentification(Identification ident) throws NullPointerException
Header
Appends the given identification to the list of identifications of this header, which each identify an application that created or modified the file. The identification at the end of the list should represent the most recent application to modify the file. This method does not attempt to identify duplicate identifications, so it will succeed even if an identical identification is already contained in the list.
appendIdentification
in interface Header
ident
- Identification to append to the list of identifications of this header.
NullPointerException
- The given identification is null
.public int countDescriptiveSchemes()
Header
Returns the total number of descriptive metadata schemes present for this header, which identify the descriptive metadata schemes used in the file.
countDescriptiveSchemes
in interface Header
public int countEssenceContainers() throws PropertyNotPresentException
Header
Returns the total number of essence containers of this header, which identify the internal essence containers used in the file.
countEssenceContainers
in interface Header
PropertyNotPresentException
- Essence containers are not present
in the file of the header.public int countEssenceData()
Header
Returns the total number of essence data items stored in the content storage of this header.
countEssenceData
in interface Header
Header.getContentStorage()
,
ContentStorage.countEssenceData()
public int countIdentifications()
Header
Returns the number of identifications in the header, which each identify an application that created or modified the file.
countIdentifications
in interface Header
public int countMobs(MobKind mobKind) throws NullPointerException
Header
Returns the number of matches for the given mob kind within
the content storage of this header. Use MobKind.AllMob
to count the total number of mobs.
countMobs
in interface Header
mobKind
- The kind of mobs to count.
NullPointerException
Header.getContentStorage()
,
ContentStorage.countMobs(MobKind)
public Set<EssenceData> enumEssenceData()
Header
Returns a set of all essence data stored in the content storage of this header.
enumEssenceData
in interface Header
Header.getEssenceData(CriteriaType)
,
Header.getContentStorage()
,
ContentStorage.enumEssenceData()
@AAFProperty(uuid1=100729092, uuid2=513, uuid3=0, uuid4={6,14,43,52,1,1,1,2}, definedName="Content", typeName="StrongReference to ContentStorage", optional=false, uniqueIdentifier=false, pid=15107) public ContentStorage getContentStorage()
Header
Returns the content storage of this header. This is the Content property of a header.
getContentStorage
in interface Header
@AAFProperty(uuid1=16908816, uuid2=514, uuid3=0, uuid4={6,14,43,52,1,1,1,5}, definedName="DescriptiveSchemes", typeName="AUIDSet", optional=true, uniqueIdentifier=false, pid=15115) public Set<AUID> getDescriptiveSchemes() throws PropertyNotPresentException
Header
Returns the set of descriptive schemes of this header, which identify the descriptive metadata schemes used in the file.
getDescriptiveSchemes
in interface Header
PropertyNotPresentException
- The optional set of descriptive metadata schemes is
not present in this header.DescriptiveFramework
,
DescriptiveClip
@AAFProperty(uuid1=16908816, uuid2=513, uuid3=0, uuid4={6,14,43,52,1,1,1,5}, definedName="EssenceContainers", typeName="AUIDSet", optional=true, uniqueIdentifier=false, pid=15114) public Set<AUID> getEssenceContainers() throws PropertyNotPresentException
Returns the set of essence containers of this header, which identify the internal essence containers used in the file. This is an optional property that is automatically maintained.
This implementation does not throw PropertyNotPresentException
. An empty
set is returned if the list of essence containers does not yet contain any items.
getEssenceContainers
in interface Header
PropertyNotPresentException
- The optional set of essence containers is not present
for this header.ContainerConstant
,
ContainerDefinition
,
ContainerDefinition.forIdentification(AUID)
public Set<EssenceData> getEssenceData(CriteriaType mediaCriteria) throws NullPointerException
Header
Returns a set of essence data from the content storage of this
header that matches the given media criteria.
If the media criteria is CriteriaType.AnyRepresentation
then all essence data that is stored in the content storage of this
header is included, producing the same result as calling Header.enumEssenceData()
.
getEssenceData
in interface Header
mediaCriteria
- Criteria for selecting essence data from storage.
NullPointerException
Header.enumEssenceData()
,
Header.getContentStorage()
,
ContentStorage.getEssenceData(CriteriaType)
@AAFProperty(uuid1=50397697, uuid2=1280, uuid3=0, uuid4={6,14,43,52,1,1,1,2}, definedName="Version", typeName="VersionType", optional=false, uniqueIdentifier=false, pid=15109) public VersionType getFileRevision()
Header
Return the file version property of the header.
getFileRevision
in interface Header
public Identification getIdentificationAt(int index) throws IndexOutOfBoundsException
Header
Retrieves the identification at the given index through the list of identifications of this header, which each identify an application that created or modified the file.
getIdentificationAt
in interface Header
index
- 0-based index of the identification to retrieve from the list of identifications
of this header.
IndexOutOfBoundsException
- The given index is outside the acceptable range for the
current list of identifications of this header.@AAFProperty(uuid1=100729092, uuid2=1540, uuid3=0, uuid4={6,14,43,52,1,1,1,2}, definedName="IdentificationList", typeName="StrongReferenceVector of Identification", optional=false, uniqueIdentifier=false, pid=15110) public List<Identification> getIdentifications()
Header
Returns the list of identifications contained within this header, which each identify an application that created or modified the file.
getIdentifications
in interface Header
public Identification getLastIdentification()
Header
Returns the identification of the last application that modified the file.
getLastIdentification
in interface Header
@AAFProperty(uuid1=117571856, uuid2=516, uuid3=0, uuid4={6,14,43,52,1,1,1,2}, definedName="LastModified", typeName="TimeStamp", optional=false, uniqueIdentifier=false, pid=15106) public TimeStamp getLastModified()
Header
Return the last modified time stamp of this header, which specifies the time and date that this file was last modified.
getLastModified
in interface Header
public Set<Mob> getMobs(SearchCriteria searchCriteria)
Header
Returns a set of mobs stored in the content storage of this header that match the given
search criteria
. If the search criteria is
null
, all mobs are returned.
getMobs
in interface Header
searchCriteria
- Search criteria to use to filter the set of mobs
returned.
null
. The
set does not clone mobs it contains.Header.getContentStorage()
,
ContentStorage.getMobs(SearchCriteria)
@AAFProperty(uuid1=16908803, uuid2=0, uuid3=0, uuid4={6,14,43,52,1,1,1,5}, definedName="OperationalPattern", typeName="AUID", optional=true, uniqueIdentifier=false, pid=15113) public AUID getOperationalPattern() throws PropertyNotPresentException
Header
Returns the identifier of the MXF operational pattern or AAF protocol that the file of this header complies with. This is an optional property.
getOperationalPattern
in interface Header
PropertyNotPresentException
- Property is not present in the header.OperationalPatternConstant
public void setOperationalPattern(AUID operationalPatternID) throws NullPointerException
Header
Sets the MXF operational pattern or AAF protocol that the file of this
header complies with. Set this optional property to null
to
omit it.
setOperationalPattern
in interface Header
operationalPatternID
- Operational pattern identifier for the header.
NullPointerException
- The given operational pattern identifier is null
.OperationalPatternConstant
public Mob getPrimaryMob() throws PropertyNotPresentException
Header
Returns the primary mob for the file of this header, which specifies the mob that the application treats as the default. This is an optional property.
getPrimaryMob
in interface Header
PropertyNotPresentException
- Property is not present
in the header.public void setPrimaryMob(Mob primaryMob)
Header
Sets the primary mob for the file of the header, which specifies the mob
that the application treats as the default. Set this optional property to
null
to omit it.
setPrimaryMob
in interface Header
primaryMob
- Primary mob for the file of the header.public ProductVersion getMajApiVersion()
Header
Return the version of the MAJ API currently running on this machine, which implements these interfaces.
getMajApiVersion
in interface Header
Header.getLastIdentification()
,
Identification.getRefImplVersion()
public boolean isDescriptiveSchemePresent(AUID descriptiveSchemeId) throws NullPointerException, PropertyNotPresentException
Header
Returns true
if the descriptive metadata scheme with
the given identifier is in set of schemes of this header; otherwise false
.
isDescriptiveSchemePresent
in interface Header
descriptiveSchemeId
- Identifier of the descriptive metadata scheme to check for.
NullPointerException
- The given identifier is null
.
PropertyNotPresentException
- The optional set of descriptive metadata schemes is
not present in this header.DescriptiveFramework
,
DescriptiveClip
public boolean isEssenceContainerPresent(AUID essenceContainerID) throws NullPointerException, PropertyNotPresentException
Header
Returns true
if the essence containers with the given
identifier is present for this header; otherwise false
. The set
of essence containers identify the internal essence containers used in the file.
The essence containers property of a header is optional.
isEssenceContainerPresent
in interface Header
essenceContainerID
- Identifier of the type of essence container to check for.
NullPointerException
PropertyNotPresentException
- Essence containers are not present in
the property.ContainerConstant
,
ContainerDefinition
,
DefinitionObject.getAUID()
public boolean isEssenceDataPresent(MobID fileMobID) throws NullPointerException, InvalidParameterException
Header
Returns true
if essence data identified by the
given mob id is present in the content storage of this header.
isEssenceDataPresent
in interface Header
fileMobID
- Identifier of a file mob that may be present in the content storage of this header.
NullPointerException
- The given mob id is null
.
InvalidParameterException
- The given file mob id does not identify a file source mob.Header.getContentStorage()
,
ContentStorage.isEssenceDataPresent(MobID)
public EssenceData lookupEssenceData(MobID mobID) throws NullPointerException, MobNotFoundException
Header
Looks up and returns the essence data that matches the given mob id from the content storage of this header.
lookupEssenceData
in interface Header
mobID
- Identifier for essence data stored in the content storage of this header.
NullPointerException
- The given mob id is null
.
MobNotFoundException
- Essence data identified with the given mob id is not
stored in the content storage of the header.Header.getContentStorage()
,
ContentStorage.lookupEssenceData(MobID)
public Identification lookupIdentification(AUID generation) throws NullPointerException, ObjectNotFoundException
Header
Returns the identification that matches the given generation identifier from the list of identifications of applications that created or modified the file of this header.
lookupIdentification
in interface Header
generation
- Unique generation identifier to retrieve from the list of identifications
of this header.
NullPointerException
- The given generation identifier is null
.
ObjectNotFoundException
- An identification with the given identifier was not found
in the list of identifications of this header.public Mob lookupMob(MobID mobID) throws NullPointerException, MobNotFoundException
Header
Returns the mob that matches the given mob id stored in the content storage of this header.
lookupMob
in interface Header
mobID
- The identifier of the mob to look up in the content storage of this header.
NullPointerException
- The given mob identifier is null
.
MobNotFoundException
- A mob with the given identifier was not found in the content storage of
this header.Header.getContentStorage()
,
ContentStorage.lookupMob(MobID)
public void removeDescriptiveScheme(AUID descriptiveSchemeID) throws NullPointerException, InvalidParameterException, PropertyNotPresentException
Header
Removes the given descriptive metadata scheme identifier from the set of schemes of this header, which identify the descriptive metadata schemes used in the file. If the
removeDescriptiveScheme
in interface Header
descriptiveSchemeID
- Descriptive metadata scheme identifier to remove from the
set of schemes of this header.
NullPointerException
- The given scheme identifier is null
.
InvalidParameterException
- The given descriptive scheme identifier is
not present in the list of schemes of this header.
PropertyNotPresentException
- The optional set of descriptive metadata schemes property is
not present in this header.DescriptiveFramework
,
DescriptiveClip
public void removeEssenceData(EssenceData essenceData) throws NullPointerException, EssenceNotFoundException
Header
Removes the given essence data item from the content storage of this header.
removeEssenceData
in interface Header
essenceData
- Essence data to remove from the content storage of this header.
NullPointerException
- The given essence data item is null
.
EssenceNotFoundException
- The given essence data item is not contained in the
content storage of this header.Header.getContentStorage()
,
ContentStorage.removeEssenceData(EssenceData)
public void removeMob(Mob mob) throws NullPointerException, MobNotFoundException
Header
Removes the given mob from the content storage of this header.
removeMob
in interface Header
mob
- Mob to remove from the header.
NullPointerException
- The given mob to remove is null
.
MobNotFoundException
- The given mob is not contained
in the content storage of this header.Header.getContentStorage()
,
ContentStorage.removeMob(Mob)
public void updateEssenceContainers()
Header
Ensures that the contents of the essence containers property
is in sync with the file's metadata. If this method succeeds, the essence containers
property will contain identifiers of all container definitions
referenced by source mobs
in the file of the header.
If the property isn't present it will be created. It is recommended that this method is called before any other of the methods affecting the essence containers can be called.
updateEssenceContainers
in interface Header
ContainerDefinition
public Identification getGeneration() throws InvalidParameterException, ObjectNotAttachedException
InterchangeObject
Gets the generation of this object, which identifies when this object was created or last modified.
This method will succeed if generation tracking is enabled for
this object. Call InterchangeObject.enableGenerationTracking()
and
InterchangeObject.disableGenerationTracking()
to control generation tracking for
this object. Call InterchangeObject.isGenerationTracked()
to determine if
generation tracking is currently enabled for this object.
getGeneration
in interface InterchangeObject
getGeneration
in class InterchangeObject
InvalidParameterException
- Generation tracking is not enabled
for this object.
ObjectNotAttachedException
- This object is not attached to a file
from which generation information can be obtained.public AUID getGenerationAUID()
InterchangeObject
Shortcut to get the AUID of the identification representing this object's generation.
This method will succeed if generation tracking is enabled for
this object. Call InterchangeObject.enableGenerationTracking()
and
InterchangeObject.disableGenerationTracking()
to control generation tracking for
this object. Call InterchangeObject.isGenerationTracked()
to determine if
generation tracking is currently enabled for this object.
getGenerationAUID
in interface InterchangeObject
getGenerationAUID
in class InterchangeObject
InterchangeObject.getGeneration()
,
Identification.getGenerationAUID()
@AAFProperty(uuid1=50397697, uuid2=512, uuid3=0, uuid4={6,14,43,52,1,1,1,1}, definedName="ByteOrder", typeName="Int16", optional=false, uniqueIdentifier=false, pid=15105) public ByteOrder getByteOrder()
@AAFProperty(uuid1=100729092, uuid2=514, uuid3=0, uuid4={6,14,43,52,1,1,1,2}, definedName="Dictionary", typeName="StrongReference to Dictionary", optional=false, uniqueIdentifier=false, pid=15108) public Dictionary getDictionary()
Header
Returns the dictionary of this header, which contains all the definitions of the file. The dictionary is automatically created when the header object is created.
getDictionary
in interface Header
@AAFProperty(uuid1=50397697, uuid2=1024, uuid3=0, uuid4={6,14,43,52,1,1,1,2}, definedName="ObjectModelVersion", typeName="UInt32", optional=true, uniqueIdentifier=false, pid=15111) public int getObjectModelVersion()
public void setObjectModelVersion(Integer objectModelVersion)
public Header clone()
MAJCommon
Creates a cloned copy of this entity. The clone will be initialized to have the same value as this value but exists independently from then on. Changes to this value will not effect the clone and changes to the clone will not effect this. MAJ API clones are true deep clones with no shared references to areas of memory within the original.
This method does not throw a CloneNotSupportedException
as all
entity values must implement the Cloneable
interface. If a cloning
error does occur, a null
value will be returned but this is very unlikely
to happen.
clone
in interface MAJCommon
clone
in class Object
Object.clone()
public void appendXMLChildren(Node parent)
XMLSerializable
Append child elements to the given parent node to serialize the value of an object
to an XML fragment. Methods of the XMLBuilder
class are provided to help with this
process.
appendXMLChildren
in interface XMLSerializable
appendXMLChildren
in class InterchangeObject
parent
- XML parent element to append child nodes to.
|
Media Authoring with Java API |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |