|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.ObjectTSOpts
TSData
TSWrld
TSUiD
class TSUiD
.
====================================================================== Class TSUiD -- Basic-Definition of a world-entry (common to all types) Attention: One object ONLY can be a member of ONE 'TSChain'-chain ##TSUiD (Eyecatcher) ======================================================================
Field Summary | |
---|---|
private TSWrld |
Chn
|
private int |
CntC
|
private int |
CntS
|
private int |
CoF
|
private TSQDir |
Dir
|
protected static java.lang.String |
IdStr
|
private static java.lang.String[] |
K_Dta
|
private TSUiD |
nxt
|
private int |
OID
|
private int |
Opt
|
private int |
OT
|
private TSPos |
Pos
|
private TSQDef |
QRef
|
private int |
SL
|
private int |
StF
|
private int[] |
Uid
|
private TSView |
VId
|
private int |
VNr
|
Constructor Summary | |
---|---|
protected |
TSUiD()
. |
protected |
TSUiD(int ot,
int sl)
. |
protected |
TSUiD(int oid,
int ot,
int sl)
. |
protected |
TSUiD(TSUiD cO,
int ot)
. |
Method Summary | |
---|---|
protected boolean |
$reNew(int oid,
int uid)
. |
protected int |
addTrI(int i,
int j)
. |
protected java.lang.String |
adjHgt(double d)
. |
protected boolean |
chainUiD(TSUiD cUiD)
. |
protected TSWrld |
chgChn(TSWrld cU)
. |
protected int |
chgCoF(int w)
. |
protected double |
chgElv(double f)
. |
protected int |
chgItS(int i)
. |
protected java.lang.String |
chgNme(java.lang.String s)
. |
protected TSQDef |
chgQDf(TSQDef nQ)
. |
protected TSSh |
chgShR(TSSh s)
. |
protected TSView |
chgView(TSView nVS)
. |
protected boolean |
chkAnim(boolean clr)
. |
protected boolean |
chkColl(boolean clr)
. |
protected TSUiD |
chkId(int id,
int db,
int t)
. |
protected java.lang.String |
chkRCnt(TSSh cSh)
. |
protected boolean |
chkSL(TSOpts cM)
. |
protected boolean |
chkType(TSOpts cM)
. |
protected boolean |
clrOpt(int nr)
. |
protected TSView |
clrView(int w)
. |
protected java.lang.String |
crDef(int n,
boolean me)
. |
protected java.lang.String |
crDef(int t,
int ix)
. |
protected java.lang.String |
crDef(int t,
int n,
boolean me,
boolean c)
. |
protected TSPos |
crPos()
. |
protected TSQDir |
crQDir()
. |
protected java.lang.String |
crStatic(TSChain cC,
TSQuad cQ,
java.lang.String cN,
int sl,
TSRoute cR)
. |
protected int |
fndTrI(int i,
int j)
. |
protected int |
getCtl(int i)
. |
protected java.lang.String |
getItem(int i)
. |
protected java.lang.String |
getMsg(int nr)
. |
protected java.lang.String |
getName(boolean org)
. |
protected static java.lang.String |
getName(int ot)
. |
protected int |
getOpt(int m)
. |
protected int |
getSL()
. |
protected int |
getUiD(int t)
. |
protected int |
incCntC(int inc)
. |
protected int |
incCntS(int inc)
. |
protected boolean |
isBefore(TSWrld vO)
. |
protected boolean |
isCtl()
. |
protected boolean |
isEqual(TSWrld vO)
. |
protected boolean |
isOpt(int nr)
. |
protected boolean |
isRoad()
. |
protected boolean |
isTrack()
. |
protected boolean |
modPos(TSPos cP)
. |
protected int |
nxtUiD(TSQuad cQ)
. |
protected int |
renUiD(int nr)
. |
protected boolean |
setName(java.util.ArrayList cL,
int ix,
java.lang.String aP,
java.lang.String... cp)
. |
protected boolean |
setOpt(int nr)
. |
protected static int |
setOT(java.lang.String kw)
. |
protected TSPos |
setPos(TSPos cP)
. |
protected TSQDir |
setQDir(TSQDir cD)
. |
protected boolean |
setSc(int i,
int j,
int k)
. |
protected int |
setSL(int w)
. |
protected int |
setStF(int w)
. |
protected int |
setUiD(int uid)
. |
protected java.lang.String |
toStr()
. |
protected java.lang.String |
toStr(boolean term)
. |
Methods inherited from class TSWrld |
---|
chgDta, chgTrI, chkMsk, chkTrItmT, get$TrI, getVNrDef, setDef |
Methods inherited from class TSData |
---|
addDta, addObj, cr$Obj, get$Obj, getDta, getDta, getFlt, getInt, getInt, getObj, getOpt, getQue, setDta, setDta, setFlt, setInt, setInt, setObj |
Methods inherited from class TSOpts |
---|
$init, chkMsk, clrMsk, clrMsk, cntMsk, cntMsk, fndMsk, getMsk, orMsk, orMsk, prtMsk, resMsk, setMsk, setMsk, tstMsk |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final java.lang.String IdStr
private static java.lang.String[] K_Dta
private int OID
private int[] Uid
private int OT
private int SL
private int StF
private int CoF
private int Opt
private int CntC
private int CntS
private TSPos Pos
private TSQDir Dir
private TSView VId
private int VNr
private TSUiD nxt
private TSWrld Chn
private TSQDef QRef
Constructor Detail |
---|
protected TSUiD()
Object-Type-definition (OT) of entry (also refer to 'getName()'): 0 - TrackObj 1 - Dyntrack 2 - Signal 3 - Static 4 - Forest 5 - Platform 6 - Siding 7 - Gantry 8 - Speedpost 9 - CarSpawner 10 - LevelCr 11 - Hazard 12 - Transfer 13 - CollideObject 14 - Telepole 15 - Pickup 32 - Tr_Watermark Used options (stored within field 'Opt'): 0 - Entry is invalid ('Dummy-Entry') Do not handle nor write 1 - UiD-Entry refers to Track-/Road-object 2 - UiD-Entry describes road (copied from Shape) 3 - UiD-Entry refers to Junction (evaluated from Shape) 4 - 7 - Entry is member of 'MveObj'-set 8 to 23 - Options depend from extended type-definition 24 to 31 - temporary used options 24 - moved to other quad -- do NOT renumber 31 - Entry is already processed Definition of 'Entry found' (common definition stored in TSOpt): 0 : UiD 1 to 15 : depends on object-class 16 : TrItemId 17 : CollideFlag 18 : CollideFunction 19 : FileName 20 : StaticFlags 21 : Position 22 : QDirection 23 : Matrix3x3 24 : MaxVisDistance 25 : VDbId 26 : StaticDetailLevel 27 : SignalSubObj 28 : SignalUnits 29 : NoDirLight 30 : not used 31 : QDirection/Matrix3x3 (Compare to sub-objects(object-class) for exact definition) This Bitarray uses the above definition, because it reflects the sequence of 'line creation' while writeing. Definition of mask 'valMsk' (common, extended objects): 0 : UiD 1 : SectionIdx 2 : Elevation 3 : JNodePosn 4 : TreeTexture (+Hidewire) 5 : Population 6 : Config (+Hidewire) 7 to 15 : not used 16 : TrItemId 17 : CollideFlag 18 : CollideFunction 19 : FileName 20 : StaticFlags 21 : Position 22 : QDirection 23 : Matrix3x3 24 : MaxVisDistance 25 : VDbId 26 : StaticDetailLevel 27 : SignalSubObj 28 : SignalUnits 29 : NoDirLight 30 to 31 : not used 'valMsk' ONLY reflect items, which are used in more than one sub-object. The bit-definitions of masks 'reqMsk' and 'addMsk' use the same assignment as 'Lines found', because they are compared to this array in order to check - if all requested lines were present - which item should be added to the set of definition-lines. Bit-usage of 'StaticFlags': 0 to 5 :6 : Tunnelentrance 7 : No_Visual_Obstruction 8 : StoreMatrix 9 to 12 : 13 : round shadow 14 : square shadow 15 : treeline shadow 16 : dynamic shadow 17 : 18 : terrain-object 19 : animate object 20 : dynamic track/road-object 21 : static track/road-object 22 to 31 : Index-Definitions from 'TSData' ( . ): 0.xx(S) - (Queue) not used 1.xx(I) - (Queue) not used (Compare to sub-objects(object-class) for additional definitions) ===================================================================== Constructor: (1) Create default-entry =====================================================================
protected TSUiD(int oid, int ot, int sl)
===================================================================== Constructor: (2) Create standard-entry =====================================================================
protected TSUiD(int ot, int sl)
===================================================================== Constructor: (3) Create special entry for 'control-objects' =====================================================================
protected TSUiD(TSUiD cO, int ot)
===================================================================== Constructor: (4) Create conversion-entry Method is used to change object-types from - Static to TrkObj - TrkObj to DynTrack - Signal to Static - Static to Gantry =====================================================================
Method Detail |
---|
protected boolean $reNew(int oid, int uid)
===================================================================== Methode "$reNew" Objekt fuer den Wechsel des zugeordneten Quadranten vorbereiten Alle als 'eindeutig' geforderten Werte korrigieren ##$reNew.TSUiD (Eyecatcher) =====================================================================
protected int addTrI(int i, int j)
===================================================================== Method "addTrI" (This dummy-method is normally overlayed) ##addTrI.TSUiD (Eyecatcher) =====================================================================
addTrI
in class TSWrld
protected java.lang.String adjHgt(double d)
===================================================================== Methode "adjHgt" Hoehenwert eines Knotens anpassen Ergebniswert muss nicht geprueft werden ##adjHgt.TSUiD (Eyecatcher) =====================================================================
protected boolean chainUiD(TSUiD cUiD)
===================================================================== Methode "chainUiD" doppelte UID-Werte (gemaess Uid[0]) miteinander verketten Die hier definierte UiD wird an des Ende der bei 'cUiD' begonnenen Kette angehaengt. 'cUiD' liegt in der Objekt-Reihenfolge der World-Datei immer VOR dem aktuellen UID-Eintrag (this). ##chainUiD.TSUiD (Eyecatcher) =====================================================================
protected TSWrld chgChn(TSWrld cU)
===================================================================== Methode "chgChn" Verkettungswert 'Chn' pflegen (eintragen/aendern oder liefern) Methode wird zur Verwaltung einer 'TSChain'-Kette benutzt ACHTUNG: Obwohl in Wirklichkeit mit UiD-Objekten gearbeitet wird, werden diese ueber die Superklasse 'TSWrld' adressiert. ##chgChn.TSUiD (Eyecatcher) =====================================================================
chgChn
in class TSWrld
protected double chgElv(double f)
===================================================================== Method "chgElv" (This dummy-method is normally overlayed) ##chgElv.TSUiD (Eyecatcher) =====================================================================
protected int chgCoF(int w)
===================================================================== Methode "chgCoF" aktuellen Wert fuer 'CollideFlags' liefern oder aendern ##chgCoF.TSUiD (Eyecatcher) =====================================================================
protected int chgItS(int i)
===================================================================== Method "chgItS" (This dummy-method is normally overlayed) ##chgItS.TSUiD (Eyecatcher) =====================================================================
protected java.lang.String chgNme(java.lang.String s)
===================================================================== Method "chgNme" (This dummy-method is normally overlayed) However it is used to signal, that a name does not exist. ##chgNme.TSUiD (Eyecatcher) =====================================================================
protected TSQDef chgQDf(TSQDef nQ)
===================================================================== Methode "chgQDf" Rueckverkettung Quadratstruktur liefern oder veraendern ACHTUNG: Wert nicht veraendern wenn 'nQ==null' Attention: backward-referennce may point to basis-part of structure ##chgQDf.TSUiD (Eyecatcher) =====================================================================
protected TSSh chgShR(TSSh s)
===================================================================== Method "chgShR" (This dummy-method is normally overlayed) ACHTUNG: Da das Argument 'null' nicht dem richtigen Typ zugeordnet werden kann, ist eine explizite Aufrufsteuerung notwendig! ##chgShR.TSUiD (Eyecatcher) =====================================================================
protected TSView chgView(TSView nVS)
===================================================================== Methode "chgView" Aktuelle ViewSphere Referenz eintragen/aendern oder liefern ##chgView.TSUiD (Eyecatcher) =====================================================================
protected boolean chkAnim(boolean clr)
===================================================================== Methode "chkAnim" Check 'Animation'-Status within 'StaticFlags' and report status Reset status if requested. ##chkAnim.TSUiD (Eyecatcher) =====================================================================
protected boolean chkColl(boolean clr)
===================================================================== Methode "chkColl" Check 'Collition'-Status within 'CollideFlags' and report status Reset status if requested. Attn: Status is 'reset' if bit is 'set' ##chkColl.TSUiD (Eyecatcher) =====================================================================
protected TSUiD chkId(int id, int db, int t)
===================================================================== Methode "chkId" UiD-Definition vergleichen (Verkettung beachten) Achtung: World-Definition(Qx,Qz) wird NICHT beachtet Es werden NUR UiD's fuer Schiene/Strasse akzeptiert Kennung: 0 - geforderter Typ (Schiene/Strasse) muss stimmen 1 - Schienen/Strassen-Objekt muss vorliegen 2 - UiD muss existieren ##chkId.TSUiD (Eyecatcher) =====================================================================
protected java.lang.String chkRCnt(TSSh cSh)
===================================================================== Methode "chkRCnt" Method checks if number of references from track-database to world-object matches the number of defined sections within the shape-definitions. If it does not match, a error-message is created, else 'null' is returned. ##chkRCnt.TSUiD (Eyecatcher) =====================================================================
protected boolean chkSL(TSOpts cM)
===================================================================== Methode "chkSL" Check mask using current 'StaticDetailLevel'. ##chkSL.TSUiD (Eyecatcher) =====================================================================
protected boolean chkType(TSOpts cM)
===================================================================== Methode "chkType" Check mask-object if it selects current objecttype. ##chkType.TSUiD (Eyecatcher) =====================================================================
protected boolean clrOpt(int nr)
===================================================================== Methode "clrOpt" Option aus den Gesamt-Optionen herausloeschen liefert den Status der Option VOR dem Loeschen ##clrOpt.TSUiD (Eyecatcher) =====================================================================
protected TSView clrView(int w)
===================================================================== Methode "clrView" Aktuelle ViewSphere Referenz loeschen und durch Viewsphere-Kennung ersetzen. Alte Viewsphere Referenz liefern ##clrView.TSUiD (Eyecatcher) =====================================================================
protected java.lang.String crDef(int t, int n, boolean me, boolean c)
===================================================================== Methode "crDef" Zeilendefinition(en) fuer die Ausgabe erzeugen Version fuer ALLE GEMEINSAMEN Definitionen ##crDef.TSUiD (Eyecatcher) =====================================================================
protected java.lang.String crDef(int t, int ix)
===================================================================== Methode "crDef" (2. Version) Zeilendefinition(en) fuer die Ausgabe erzeugen Spezial-Version fuer GEMEINSAMEN Definitionen mit 'K_Dta' ACHTUNG: Keine Plausi-Pruefungen (nur interne Verwendung) ##crDef.TSUiD (Eyecatcher) =====================================================================
protected java.lang.String crDef(int n, boolean me)
===================================================================== Methode "crDef" (3. Version fuer Kontroll-Eintraege) Zeilendefinition(en) fuer die Ausgabe erzeugen ##crDef.TSUiD (Eyecatcher) =====================================================================
protected TSPos crPos()
===================================================================== Methode "crPos" Information-Hiding: Positionswerte als TSPos-Objekt liefern Achtung: Es wird eine (shallow-)Kopie geliefert, sodass die Attribute dieses Objektes (testweise) modifiziert werden koennen, ohne das Basisobjekt zu beeinflussen ##crPos.TSUiD (Eyecatcher) =====================================================================
crPos
in class TSWrld
protected TSQDir crQDir()
===================================================================== Methode "crQDir" Information-Hiding: Rotationswerte als TSQDir-Objekt liefern ##crQDir.TSUiD (Eyecatcher) =====================================================================
crQDir
in class TSWrld
protected java.lang.String crStatic(TSChain cC, TSQuad cQ, java.lang.String cN, int sl, TSRoute cR)
===================================================================== Methode "crStatic" Create a 'Static' world-object based on the current object and insert it to appropriate chain Return error-message or 'null' if sucessful ##crStatic.TSUiD (Eyecatcher) =====================================================================
protected int fndTrI(int i, int j)
===================================================================== Method "fndTrI" (This dummy-method is normally overlayed) ##fndTrI.TSUiD (Eyecatcher) =====================================================================
protected int getCtl(int i)
===================================================================== Method "getCtl" (This dummy-method is normally overlayed) ##getCtl.TSUiD (Eyecatcher) =====================================================================
protected java.lang.String getItem(int i)
===================================================================== Methode"getItem" (This dummy-method is normally overlayed) ##getItem.TSUiD (Eyecatcher) =====================================================================
protected java.lang.String getMsg(int nr)
===================================================================== Methode "getMsg" Verschiedene Informationen in verschiedenen Formen bereitstellen ##getMsg.TSUiD (Eyecatcher) =====================================================================
protected java.lang.String getName(boolean org)
===================================================================== Methode "getName" liefern der Bezeichnung des Objekt-Typs Diese Methode wird benutzt wenn in der abgeleiteten Klasse keine Methode 'getName()' definiert ist. Da dies (normalerweise) nicht der Fall ist, wird diese Methode nur fuer Objekte der Basisklasse verwendet. Diese haben keinen Namen. ##getName.TSUiD (Eyecatcher) =====================================================================
protected static java.lang.String getName(int ot)
===================================================================== Methode "getName" (statisch) liefern der Bezeichnung eines Objekt-Typs ##getName.TSUiD (Eyecatcher) =====================================================================
protected int getOpt(int m)
===================================================================== Methode "getOpt" Gesamt-Optionen maskiert liefern Maske '-1' (=0xFFFFFFFF) liefert ALLE Optionen Die gespeicherte Maske wird NICHT veraendert ##getOpt.TSUiD (Eyecatcher) =====================================================================
protected int getSL()
===================================================================== Methode "getSL" Information-Hiding: Return current StaticDetailLevel ##getSL.TSUiD (Eyecatcher) =====================================================================
protected int getUiD(int t)
===================================================================== Methode "getUiD" Information-Hiding: aktuelle UID gemaess UiD-Typ liefern ##getUiD.TSUiD (Eyecatcher) =====================================================================
protected final int incCntC(int inc)
===================================================================== Method "incCntC" Increment reference-counter (overall) for node-references within database. ALL references from database are counted. (using argument'0', reference-counter may be returned only) ('C' means 'complete') ##incCntC.TSUiD (Eyecatcher) =====================================================================
protected final int incCntS(int inc)
===================================================================== Method "incCntS" Increment reference-counter (section) for node-references within database. Only references from section-defintions within database are counted. (using argument'0', reference-counter may be returned only) ('S' means 'sections') ##incCntS.TSUiD (Eyecatcher) =====================================================================
protected boolean isBefore(TSWrld vO)
===================================================================== Methode "isBefore" Methode zum sortieren der World-Eintraege Diese Methode liefert 'true', wenn das aktuelle Objekt in der Sortierfolge noch VOR dem GELIEFERTEN Objekt (vO) liegt. Diese Methode wird durch 'TSChain' benutzt und gefordert ##isBefore.TSUiD (Eyecatcher) =====================================================================
isBefore
in class TSWrld
protected boolean isCtl()
===================================================================== Methode "isCtl" Pruefung ob ein Control-Eintrag (OT>31) vorliegt ##isCtl.TSUiD (Eyecatcher) =====================================================================
protected boolean isEqual(TSWrld vO)
===================================================================== Methode "isEqual" Methode zum pruefen der World-Eintraege auf Gleichheit Diese Methode wird durch 'TSChain' benutzt und gefordert ##isEqual.TSUiD (Eyecatcher) =====================================================================
isEqual
in class TSWrld
protected boolean isOpt(int nr)
===================================================================== Methode "isOpt" Pruefung ob Option aktiviert Methode liefert 'true' wenn das Optionenbit gesetzt ist ##isOpt.TSUiD (Eyecatcher) =====================================================================
protected boolean isRoad()
===================================================================== Methode "isRoad" Pruefen ob Eintrag eine Strasse beschreibt Wenn DIESE Methode aktiv wird kann KEINE Strasse vorliegen. Falls der Subtyp die Moeglichkeit einer Strasse vorsieht, wird diese Methode ueberschrieben. ##isRoad.TSUiD (Eyecatcher) =====================================================================
protected boolean isTrack()
===================================================================== Methode "isTrack" pruefen ob World-Eintrag eine Track-Definition ist Wenn DIESE Methode aktiviert wird, liegt KEINE Track-Def. vor. ##isTrack.TSUiD (Eyecatcher) =====================================================================
protected boolean modPos(TSPos cP)
===================================================================== Method "modPos" Modify a supplied Offset-position using the current direction Method returns 'true' if an error is found ##modPos.TSUiD (Eyecatcher) =====================================================================
protected int nxtUiD(TSQuad cQ)
===================================================================== Methode "nxtUiD" UID-Wert(orginal) mit Maximalwert neu setzen und korrigieren Routine arbeitet auf 'Uid[1]', 'Uid[2]' ##nxtUiD.TSUiD (Eyecatcher) =====================================================================
protected int renUiD(int nr)
===================================================================== Methode "renUiD" UID-Wert(neu) mit neue erstellter UiD-Kennung setzen Routine arbeitet auf 'Uid2' Wenn 'nr' negativ ist, wird 'nr' unveraendert zurueckgegeben und die UiD nicht veraendert Routine arbeitet auf 'Uid[2]' ##renUiD.TSUiD (Eyecatcher) =====================================================================
protected boolean setName(java.util.ArrayList cL, int ix, java.lang.String aP, java.lang.String... cp)
===================================================================== Method "setName" (This dummy-method is normally overlayed) ##setName.TSUiD (Eyecatcher) =====================================================================
protected boolean setOpt(int nr)
===================================================================== Methode "setOpt" Option den Gesamt-Optionen hinzufuegen liefert den Status der Option VOR dem setzen ##setOpt.TSUiD (Eyecatcher) =====================================================================
protected static int setOT(java.lang.String kw)
===================================================================== Methode "setOT" (statisch) Objekt-Typ pruefen und liefern. Wird ausschliesslich in 'chgWF()' benutzt! Achtung: Objekttyp ist in kleienen Buchstaben angegeben. ##setOT.TSUiD (Eyecatcher) =====================================================================
protected TSPos setPos(TSPos cP)
===================================================================== Methode "setPos" Positionsobjekt speichern ##setPos.TSUiD (Eyecatcher) =====================================================================
protected TSQDir setQDir(TSQDir cD)
===================================================================== Methode "setQDir" Richtungsdefinition eines Objektes speichern ##setQDir.TSUiD (Eyecatcher) =====================================================================
setQDir
in class TSWrld
protected boolean setSc(int i, int j, int k)
===================================================================== Method "setSc" (This dummy-method is normally overlayed) ##setSc.TSUiD (Eyecatcher) =====================================================================
protected int setSL(int w)
===================================================================== Method "setSL" Set new value for 'StaticDetailLevel'. Value is chanded in every case and OLD one is returned. Value can be ONLY resumed if used twice: 'setSL(x=setSL(0));'. Attention: This method marks 'StaticDetailLevel' as 'set explicitely' Attention: New value may be modified to match the allowed range. ##setSL.TSUiD (Eyecatcher) =====================================================================
protected int setStF(int w)
===================================================================== Methode "setStF" Set new value for 'StaticFlags' Value can be resumed if used twice: 'setStF(x=setStF(0));' ##setStF.TSUiD (Eyecatcher) =====================================================================
protected int setUiD(int uid)
===================================================================== Methode "setUiD" aktuelle UID initialisieren und eintragen Achtung: Eine einmal eingetragene UiD kann hiermit NICHT mehr ueberschrieben werden ##setUiD.TSUiD (Eyecatcher) =====================================================================
protected java.lang.String toStr()
===================================================================== Method "toStr" Build a string-representation of all values of this class ##toStr.TSUiD (Eyecatcher) =====================================================================
toStr
in class TSWrld
protected final java.lang.String toStr(boolean term)
===================================================================== Method "toStr" Build a string-representation of all values of this class ##toStr.TSUiD (Eyecatcher) =====================================================================
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |