/**
* Erzeugt mit Hilfe des Defintionsbaumes und der in dieser Klasse
* definierten Get-Methoden den Datenbaum. Die Methode wird dabei rekursiv
* aufgerufen. Eingesetzt wird sie von allen Reply-Klassen.
*
* Knoten im Definitionsbaum sind DataFieldDef-Objekte. Für jedes Feld einer
* ELISA-Antwort sind in jeweils einem DataFieldDef-Objekt Angaben zum
* Namen, Datentyp und Länge des Feldes hinterlegt. Das Bytearray mit den
* Antwortdaten wird nun durchlaufen und entsprechend der Angaben im
* Definitionsbaum die Werte ausgelesen. Für jeden ausgelesenen Wert wird
* ein DataFieldDef-Objekt erzeugt, diesem der Wert übergeben und dem
* Datenbaum hinzugefügt. Um die Werte in Java-Datentypen umzuwandeln und
* auszulesen werden die Get-Methoden dieser Klasse verwendet.
*
* @param rootDef
* Wurzel des Defintionsbaumes (oder Teilbaumes)
* @param pos
* Startposition im ELISA-Stream (sollte eigentlich immer 0 sein)
* @param rootData
* Wurzel des Datenbaumes (oder Teilbaumes)
* @return liefert die aktuelle Position innerhalb des ELISA-Streams zurück
* @throws IndexOutOfBoundsException
* @throws UnsupportedEncodingException
*
*/