|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eclipse.ocl.examples.pivot.utilities.PivotStandardLibrary org.eclipse.ocl.examples.pivot.utilities.TypeCaches org.eclipse.ocl.examples.pivot.utilities.TypeManager
public class TypeManager
A TypeManager adapts a ResourceSet to provide facilities for the pivot model.
An PivotURI entry is maintained for each non-null EPackage.nsURI to facilitate lookup, detect duplicates, and domain (Ecore/UML - Pivot - CS) mappings.
An PivotPrefix entry is maintained for each non-null EPackage.nsPrefix to facilitate alias generation for monikers.
Nested Class Summary | |
---|---|
static interface |
TypeManager.Factory
|
static class |
TypeManager.TuplePart
|
Nested classes/interfaces inherited from class org.eclipse.ocl.examples.pivot.utilities.TypeCaches |
---|
TypeCaches.CompleteClassOperationsIterable, TypeCaches.CompleteClassPropertiesIterable, TypeCaches.CompleteClassSuperClassesIterable, TypeCaches.CompleteElementConstraintsIterable, TypeCaches.CompletePackagePackagesIterable, TypeCaches.CompletePackageTypesIterable, TypeCaches.OrphanNode |
Nested classes/interfaces inherited from interface org.eclipse.emf.common.notify.Adapter |
---|
org.eclipse.emf.common.notify.Adapter.Internal |
Field Summary | |
---|---|
protected org.eclipse.emf.ecore.resource.impl.ResourceSetImpl |
externalResourceSet
|
protected java.util.List<Library> |
pivotLibraries
All Library packages imported intio the current type managed domain. |
protected org.eclipse.emf.ecore.resource.Resource |
pivotLibraryResource
The resource of the first of the pivotLibraries. |
protected org.eclipse.emf.ecore.resource.ResourceSet |
pivotResourceSet
|
Fields inherited from class org.eclipse.ocl.examples.pivot.utilities.TypeCaches |
---|
pivotMetaModel |
Fields inherited from class org.eclipse.ocl.examples.pivot.utilities.PivotStandardLibrary |
---|
DEFAULT_OCL_STDLIB_URI, defaultStandardLibraryURI |
Constructor Summary | |
---|---|
TypeManager()
|
|
TypeManager(org.eclipse.emf.ecore.resource.ResourceSet pivotResourceSet)
|
Method Summary | ||
---|---|---|
void |
addExternalResource(External2Pivot external2Pivot)
|
|
static void |
addFactory(TypeManager.Factory factory)
|
|
Namespace |
addGlobalNamespace(java.lang.String name,
Namespace namespace)
|
|
boolean |
addGlobalTypes(java.util.Collection<Type> types)
|
|
int |
compareOperationMatches(Operation reference,
java.util.Map<TemplateParameter,ParameterableElement> referenceBindings,
Operation candidate,
java.util.Map<TemplateParameter,ParameterableElement> candidateBindings)
Return -ve if match1 is inferior to match2, +ve if match2 is inferior to match1, or zero if both matches are of equal validity. |
|
protected void |
compilePrecedenceOperation(Operation operation)
|
|
protected void |
compilePrecedencePackage(Package pivotPackage)
|
|
java.util.List<java.lang.String> |
compilePrecedences(java.util.Collection<? extends Package> rootPackages)
Interleave the ownedPrecedences of the rootPackages to establish a merged ordering and assign the index in that ordering to each rootPackages.ownedPrecedences. |
|
protected void |
compilePrecedenceType(Type pivotType)
|
|
protected CallableImplementation |
computeOperationImplementation(Operation operation)
|
|
java.util.Collection<Package> |
computePivotRootPackages()
|
|
protected CallableImplementation |
computePropertyImplementation(Property property)
|
|
boolean |
conformsTo(Type firstType,
Type secondType)
Deprecated. |
|
boolean |
conformsTo(Type firstType,
Type secondType,
java.util.Map<TemplateParameter,ParameterableElement> bindings)
|
|
protected boolean |
conformsToClassifierType(ClassifierType firstType,
ClassifierType secondType,
java.util.Map<TemplateParameter,ParameterableElement> bindings)
|
|
protected boolean |
conformsToCollectionType(CollectionType firstType,
CollectionType secondType,
java.util.Map<TemplateParameter,ParameterableElement> bindings)
|
|
protected boolean |
conformsToLambdaType(LambdaType firstType,
LambdaType secondType,
java.util.Map<TemplateParameter,ParameterableElement> bindings)
|
|
protected boolean |
conformsToTupleType(TupleType actualType,
TupleType requiredType,
java.util.Map<TemplateParameter,ParameterableElement> bindings)
|
|
InvalidLiteralExp |
createInvalidExpression()
|
|
protected org.eclipse.emf.ecore.resource.Resource |
createOrphanage(org.eclipse.emf.common.util.URI uri)
|
|
|
createPackage(java.lang.Class<T> pivotClass,
org.eclipse.emf.ecore.EClass pivotEClass,
java.lang.String name,
java.lang.String nsURI)
|
|
Package |
createPackage(java.lang.String string,
java.lang.String nsURI)
|
|
org.eclipse.emf.ecore.resource.Resource |
createResource(org.eclipse.emf.common.util.URI uri,
java.lang.String contentType)
|
|
UnspecifiedType |
createUnspecifiedType()
|
|
void |
dispose()
|
|
static TypeManager |
findAdapter(org.eclipse.emf.ecore.resource.ResourceSet resourceSet)
|
|
static TypeManager |
getAdapter(org.eclipse.emf.ecore.resource.ResourceSet resourceSet)
|
|
ClassifierType |
getClassifierType(Type type)
|
|
CollectionType |
getCollectionType(boolean isOrdered,
boolean isUnique)
|
|
CollectionType |
getCollectionType(boolean isOrdered,
boolean isUnique,
Type elementType)
|
|
Type |
getCollectionType(java.lang.String collectionTypeName,
Type elementType)
|
|
java.util.List<Class> |
getCommonClasses(Class leftClass,
Class rightClass)
|
|
Type |
getCommonTupleType(TupleType leftType,
TupleType rightType,
java.util.Map<TemplateParameter,ParameterableElement> bindings)
|
|
Type |
getCommonType(Type leftType,
Type rightType)
Deprecated. |
|
Type |
getCommonType(Type leftType,
Type rightType,
java.util.Map<TemplateParameter,ParameterableElement> templateParameterSubstitutions)
|
|
java.lang.String |
getDefaultStandardLibraryURI()
Return the CompleteEnvironmentManager, which is null if none yet created. |
|
org.eclipse.emf.ecore.resource.ResourceSet |
getExternalResourceSet()
|
|
java.util.Set<java.util.Map.Entry<java.lang.String,Namespace>> |
getGlobalNamespaces()
|
|
java.lang.Iterable<Type> |
getGlobalTypes()
|
|
CallableImplementation |
getImplementation(Feature feature)
Return the implementation of a feature. |
|
CallableImplementation |
getImplementation(Operation operation)
|
|
CallableImplementation |
getImplementation(Property property)
|
|
Precedence |
getInfixPrecedence(java.lang.String operatorName)
|
|
LambdaType |
getLambdaType(java.lang.String typeName,
Type contextType,
java.util.List<? extends Type> parameterTypes,
Type resultType,
java.util.Map<TemplateParameter,ParameterableElement> bindings,
java.lang.String moniker)
|
|
java.util.List<Library> |
getLibraries()
|
|
org.eclipse.emf.ecore.resource.Resource |
getLibraryResource()
|
|
Type |
getLibraryType(java.lang.String string,
java.util.List<? extends ParameterableElement> templateArguments)
|
|
|
getLibraryType(T libraryType,
java.util.List<? extends ParameterableElement> templateArguments,
boolean resolveSuperClasses)
|
|
Package |
getPivotMetaModel()
|
|
|
getPivotOfEcore(java.lang.Class<T> pivotClass,
org.eclipse.emf.ecore.EObject eObject)
|
|
org.eclipse.emf.ecore.resource.ResourceSet |
getPivotResourceSet()
|
|
Type |
getPivotType(java.lang.String className)
Return the pivot model class for className with the Pivot Model. |
|
java.lang.Iterable<? extends Nameable> |
getPrecedences(Package pivotPackage)
|
|
Precedence |
getPrefixPrecedence(java.lang.String operatorName)
|
|
org.eclipse.emf.common.util.URI |
getResourceIdentifier(java.lang.Object uniqueContext,
java.lang.String subContext)
Return the URI to be used for a concrete syntax resource for an expression associated with a uniqueContext. |
|
CollectionType |
getSetType(Type elementType)
|
|
protected Type |
getSpecializedLambdaType(LambdaType type,
java.util.Map<TemplateParameter,ParameterableElement> usageBindings)
|
|
protected java.lang.String |
getSpecializedMoniker(Type libraryType,
java.util.List<? extends ParameterableElement> templateArguments)
|
|
|
getSpecializedOperation(T unspecializedOperation,
java.util.Map<TemplateParameter,ParameterableElement> templateBindings)
|
|
protected java.lang.String |
getSpecializedOperationMoniker(Operation operation,
java.util.List<? extends ParameterableElement> templateArguments,
java.util.Map<TemplateParameter,ParameterableElement> templateBindings)
|
|
protected Type |
getSpecializedTupleType(TupleType type,
java.util.Map<TemplateParameter,ParameterableElement> usageBindings)
|
|
protected Type |
getSpecializedType(Type type,
java.util.Map<TemplateParameter,ParameterableElement> usageBindings)
|
|
org.eclipse.emf.ecore.resource.ResourceSet |
getTarget()
|
|
TupleType |
getTupleType(java.lang.String typeName,
java.util.Collection<? extends TypedElement> parts,
java.util.Map<TemplateParameter,ParameterableElement> bindings,
java.lang.String moniker)
Creates a new tuple instance. |
|
Type |
getTypeWithMultiplicity(TypedMultiplicityElement element)
|
|
ValueFactory |
getValueFactory()
|
|
static void |
initializePivotResourceSet(org.eclipse.emf.ecore.resource.ResourceSet pivotResourceSet)
|
|
protected void |
installLibrary(Library pivotLibrary)
|
|
void |
installPackage(Package pivotPackage)
|
|
void |
installResource(org.eclipse.emf.ecore.resource.Resource pivotResource)
|
|
boolean |
isAdapterForType(java.lang.Object type)
|
|
static boolean |
isLibraryType(Type type)
|
|
boolean |
isSuperClassOf(Type unspecializedFirstType,
Class secondType)
|
|
boolean |
isUnderspecified(ParameterableElement type)
Retyurn true if this type involves an UnspecifiedType. |
|
protected boolean |
isUnspecialized(java.util.List<TemplateParameter> templateParameters,
java.util.List<? extends ParameterableElement> templateArguments)
|
|
protected void |
lazyLoadPivotMetaModel()
|
|
protected org.eclipse.emf.ecore.resource.Resource |
loadDefaultLibrary(java.lang.String uri)
|
|
void |
loadLibrary(org.eclipse.emf.ecore.resource.Resource pivotResource)
|
|
protected void |
loadLibraryPackage(Package pivotPackage)
|
|
Element |
loadResource(org.eclipse.emf.common.util.URI uri,
java.lang.String alias)
|
|
void |
notifyChanged(org.eclipse.emf.common.notify.Notification notification)
|
|
java.util.Set<Operation> |
resolveLocalOperation(Class pivotClass,
java.lang.String operationName,
Type... pivotArguments)
Add a resource-specific map of elements to preferred aliases, updating the internal pivot-resource-set-wide map of elements to pivot-aliases and vice-versa. |
|
Operation |
resolveOperation(Type leftType,
java.lang.String operationName,
Type... rightTypes)
|
|
java.util.Set<Operation> |
resolveOperations(Class pivotClass,
java.lang.String operationName,
Type... pivotArguments)
|
|
void |
resolveSpecializationBaseClasses()
|
|
void |
resolveSuperClasses(Class specializedClass)
Update a specializedClass so that its superclasses correspond to the specializations of the specializations of the superclasses of the class that specializedClass specializes. |
|
void |
resolveSuperClasses(Class specializedClass,
Class libraryClass,
java.util.Map<TemplateParameter,ParameterableElement> allBindings)
|
|
void |
setDefaultStandardLibraryURI(java.lang.String defaultStandardLibraryURI)
|
|
static void |
setMonikerAsID(java.util.Collection<? extends org.eclipse.emf.ecore.resource.Resource> resources)
Install the moniker of each nameable pivot element as its xmi:id. |
|
void |
setTarget(org.eclipse.emf.common.notify.Notifier newTarget)
|
Methods inherited from class org.eclipse.ocl.examples.pivot.utilities.PivotStandardLibrary |
---|
defineLibraryType, getBagType, getBooleanType, getClassifierType, getCollectionType, getEnumerationType, getIntegerType, getLibraryType, getOclAnyType, getOclInvalidType, getOclMessageType, getOclVoidType, getOrderedSetType, getRealType, getRequiredLibraryType, getSequenceType, getSetType, getStringType, getTupleType, getUnlimitedNaturalType, isOrdered, isUnique, resetLibrary |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final org.eclipse.emf.ecore.resource.ResourceSet pivotResourceSet
protected java.util.List<Library> pivotLibraries
protected org.eclipse.emf.ecore.resource.Resource pivotLibraryResource
protected org.eclipse.emf.ecore.resource.impl.ResourceSetImpl externalResourceSet
Constructor Detail |
---|
public TypeManager()
public TypeManager(org.eclipse.emf.ecore.resource.ResourceSet pivotResourceSet)
Method Detail |
---|
public static void addFactory(TypeManager.Factory factory)
public static TypeManager findAdapter(org.eclipse.emf.ecore.resource.ResourceSet resourceSet)
public static TypeManager getAdapter(org.eclipse.emf.ecore.resource.ResourceSet resourceSet)
public static void initializePivotResourceSet(org.eclipse.emf.ecore.resource.ResourceSet pivotResourceSet)
public static boolean isLibraryType(Type type)
public static void setMonikerAsID(java.util.Collection<? extends org.eclipse.emf.ecore.resource.Resource> resources)
pivotResources
- public void addExternalResource(External2Pivot external2Pivot)
public Namespace addGlobalNamespace(java.lang.String name, Namespace namespace)
public boolean addGlobalTypes(java.util.Collection<Type> types)
public int compareOperationMatches(Operation reference, java.util.Map<TemplateParameter,ParameterableElement> referenceBindings, Operation candidate, java.util.Map<TemplateParameter,ParameterableElement> candidateBindings)
public java.util.List<java.lang.String> compilePrecedences(java.util.Collection<? extends Package> rootPackages)
protected void compilePrecedenceOperation(Operation operation)
protected void compilePrecedencePackage(Package pivotPackage)
protected void compilePrecedenceType(Type pivotType)
protected CallableImplementation computeOperationImplementation(Operation operation) throws java.lang.ClassNotFoundException, java.lang.SecurityException, java.lang.NoSuchFieldException, java.lang.IllegalArgumentException, java.lang.IllegalAccessException
java.lang.ClassNotFoundException
java.lang.SecurityException
java.lang.NoSuchFieldException
java.lang.IllegalArgumentException
java.lang.IllegalAccessException
public java.util.Collection<Package> computePivotRootPackages()
protected CallableImplementation computePropertyImplementation(Property property) throws java.lang.ClassNotFoundException, java.lang.SecurityException, java.lang.NoSuchFieldException, java.lang.IllegalArgumentException, java.lang.IllegalAccessException
java.lang.ClassNotFoundException
java.lang.SecurityException
java.lang.NoSuchFieldException
java.lang.IllegalArgumentException
java.lang.IllegalAccessException
@Deprecated public boolean conformsTo(Type firstType, Type secondType)
conformsTo
in interface StandardLibrary
public boolean conformsTo(Type firstType, Type secondType, java.util.Map<TemplateParameter,ParameterableElement> bindings)
conformsTo
in interface StandardLibrary
protected boolean conformsToClassifierType(ClassifierType firstType, ClassifierType secondType, java.util.Map<TemplateParameter,ParameterableElement> bindings)
protected boolean conformsToLambdaType(LambdaType firstType, LambdaType secondType, java.util.Map<TemplateParameter,ParameterableElement> bindings)
protected boolean conformsToCollectionType(CollectionType firstType, CollectionType secondType, java.util.Map<TemplateParameter,ParameterableElement> bindings)
protected boolean conformsToTupleType(TupleType actualType, TupleType requiredType, java.util.Map<TemplateParameter,ParameterableElement> bindings)
public InvalidLiteralExp createInvalidExpression()
protected org.eclipse.emf.ecore.resource.Resource createOrphanage(org.eclipse.emf.common.util.URI uri)
createOrphanage
in class TypeCaches
public Package createPackage(java.lang.String string, java.lang.String nsURI)
public <T extends Package> T createPackage(java.lang.Class<T> pivotClass, org.eclipse.emf.ecore.EClass pivotEClass, java.lang.String name, java.lang.String nsURI)
public org.eclipse.emf.ecore.resource.Resource createResource(org.eclipse.emf.common.util.URI uri, java.lang.String contentType)
public UnspecifiedType createUnspecifiedType()
public void dispose()
dispose
in class TypeCaches
public ClassifierType getClassifierType(Type type)
public CollectionType getCollectionType(boolean isOrdered, boolean isUnique)
public CollectionType getCollectionType(boolean isOrdered, boolean isUnique, Type elementType)
public Type getCollectionType(java.lang.String collectionTypeName, Type elementType)
public java.util.List<Class> getCommonClasses(Class leftClass, Class rightClass)
public Type getCommonTupleType(TupleType leftType, TupleType rightType, java.util.Map<TemplateParameter,ParameterableElement> bindings)
@Deprecated public Type getCommonType(Type leftType, Type rightType)
public Type getCommonType(Type leftType, Type rightType, java.util.Map<TemplateParameter,ParameterableElement> templateParameterSubstitutions)
public java.lang.String getDefaultStandardLibraryURI()
public org.eclipse.emf.ecore.resource.ResourceSet getExternalResourceSet()
public java.util.Set<java.util.Map.Entry<java.lang.String,Namespace>> getGlobalNamespaces()
public java.lang.Iterable<Type> getGlobalTypes()
public CallableImplementation getImplementation(Feature feature) throws java.lang.ClassNotFoundException, java.lang.SecurityException, java.lang.NoSuchFieldException, java.lang.IllegalArgumentException, java.lang.IllegalAccessException
feature
- to be implemented.
java.lang.ClassNotFoundException
- if the implementation class realising
the implementation is not loadable
java.lang.NoSuchFieldException
- if the implementation class realising
the implementation does not provide a static INSTANCE field
java.lang.SecurityException
- if the implementation class is not accessible
java.lang.IllegalAccessException
- if the implementation class is not accessible
java.lang.IllegalArgumentException
- if the implementation class is not accessiblepublic CallableImplementation getImplementation(Operation operation) throws java.lang.ClassNotFoundException, java.lang.SecurityException, java.lang.NoSuchFieldException, java.lang.IllegalArgumentException, java.lang.IllegalAccessException
java.lang.ClassNotFoundException
java.lang.SecurityException
java.lang.NoSuchFieldException
java.lang.IllegalArgumentException
java.lang.IllegalAccessException
public CallableImplementation getImplementation(Property property) throws java.lang.ClassNotFoundException, java.lang.SecurityException, java.lang.NoSuchFieldException, java.lang.IllegalArgumentException, java.lang.IllegalAccessException
java.lang.ClassNotFoundException
java.lang.SecurityException
java.lang.NoSuchFieldException
java.lang.IllegalArgumentException
java.lang.IllegalAccessException
public Precedence getInfixPrecedence(java.lang.String operatorName)
public LambdaType getLambdaType(java.lang.String typeName, Type contextType, java.util.List<? extends Type> parameterTypes, Type resultType, java.util.Map<TemplateParameter,ParameterableElement> bindings, java.lang.String moniker)
public java.util.List<Library> getLibraries()
public org.eclipse.emf.ecore.resource.Resource getLibraryResource()
public Type getLibraryType(java.lang.String string, java.util.List<? extends ParameterableElement> templateArguments)
public <T extends Type> T getLibraryType(T libraryType, java.util.List<? extends ParameterableElement> templateArguments, boolean resolveSuperClasses)
public Package getPivotMetaModel()
public <T extends NamedElement> T getPivotOfEcore(java.lang.Class<T> pivotClass, org.eclipse.emf.ecore.EObject eObject)
public org.eclipse.emf.ecore.resource.ResourceSet getPivotResourceSet()
public Type getPivotType(java.lang.String className)
getPivotType
in interface StandardLibrary
public java.lang.Iterable<? extends Nameable> getPrecedences(Package pivotPackage)
public Precedence getPrefixPrecedence(java.lang.String operatorName)
public org.eclipse.emf.common.util.URI getResourceIdentifier(java.lang.Object uniqueContext, java.lang.String subContext)
public CollectionType getSetType(Type elementType)
protected java.lang.String getSpecializedMoniker(Type libraryType, java.util.List<? extends ParameterableElement> templateArguments)
public <T extends Operation> T getSpecializedOperation(T unspecializedOperation, java.util.Map<TemplateParameter,ParameterableElement> templateBindings)
protected java.lang.String getSpecializedOperationMoniker(Operation operation, java.util.List<? extends ParameterableElement> templateArguments, java.util.Map<TemplateParameter,ParameterableElement> templateBindings)
protected Type getSpecializedType(Type type, java.util.Map<TemplateParameter,ParameterableElement> usageBindings)
getSpecializedType
in class TypeCaches
protected Type getSpecializedLambdaType(LambdaType type, java.util.Map<TemplateParameter,ParameterableElement> usageBindings)
protected Type getSpecializedTupleType(TupleType type, java.util.Map<TemplateParameter,ParameterableElement> usageBindings)
public org.eclipse.emf.ecore.resource.ResourceSet getTarget()
getTarget
in interface org.eclipse.emf.common.notify.Adapter
public TupleType getTupleType(java.lang.String typeName, java.util.Collection<? extends TypedElement> parts, java.util.Map<TemplateParameter,ParameterableElement> bindings, java.lang.String moniker)
type
- the type (a TupleType
) of the tuple to be createdvalues
- a mapping of the tuple parts
public Type getTypeWithMultiplicity(TypedMultiplicityElement element)
public ValueFactory getValueFactory()
protected void installLibrary(Library pivotLibrary)
public void installPackage(Package pivotPackage)
public void installResource(org.eclipse.emf.ecore.resource.Resource pivotResource)
installResource
in class TypeCaches
public boolean isAdapterForType(java.lang.Object type)
isAdapterForType
in interface org.eclipse.emf.common.notify.Adapter
public boolean isSuperClassOf(Type unspecializedFirstType, Class secondType)
public boolean isUnderspecified(ParameterableElement type)
protected boolean isUnspecialized(java.util.List<TemplateParameter> templateParameters, java.util.List<? extends ParameterableElement> templateArguments)
protected void lazyLoadPivotMetaModel()
lazyLoadPivotMetaModel
in class TypeCaches
protected org.eclipse.emf.ecore.resource.Resource loadDefaultLibrary(java.lang.String uri)
loadDefaultLibrary
in class PivotStandardLibrary
public void loadLibrary(org.eclipse.emf.ecore.resource.Resource pivotResource)
protected void loadLibraryPackage(Package pivotPackage)
public Element loadResource(org.eclipse.emf.common.util.URI uri, java.lang.String alias)
public void notifyChanged(org.eclipse.emf.common.notify.Notification notification)
notifyChanged
in interface org.eclipse.emf.common.notify.Adapter
public void resolveSpecializationBaseClasses()
public void resolveSuperClasses(Class specializedClass)
specializedClass
- to update superclasses ofpublic void resolveSuperClasses(Class specializedClass, Class libraryClass, java.util.Map<TemplateParameter,ParameterableElement> allBindings)
public Operation resolveOperation(Type leftType, java.lang.String operationName, Type... rightTypes)
public java.util.Set<Operation> resolveOperations(Class pivotClass, java.lang.String operationName, Type... pivotArguments)
public java.util.Set<Operation> resolveLocalOperation(Class pivotClass, java.lang.String operationName, Type... pivotArguments)
resource
- newAliasMap
-
public void setDefaultStandardLibraryURI(java.lang.String defaultStandardLibraryURI)
public void setTarget(org.eclipse.emf.common.notify.Notifier newTarget)
setTarget
in interface org.eclipse.emf.common.notify.Adapter
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |