package Savage.Buildings.UHRB;

import org.web3d.x3d.jsail.Core.*;
import org.web3d.x3d.jsail.EnvironmentalEffects.*;
import org.web3d.x3d.jsail.fields.*;
import org.web3d.x3d.jsail.Geometry3D.*;
import org.web3d.x3d.jsail.Grouping.*;
import org.web3d.x3d.jsail.Navigation.*;
import org.web3d.x3d.jsail.Rendering.*;
import org.web3d.x3d.jsail.Scripting.*;
import org.web3d.x3d.jsail.Shape.*;

// Javadoc metadata annotations follow, see below for X3DJSAIL Java source code.
/**
 * <p> Ultra-high-resolution building (UHRB) example. </p>
 <p> Related links: Catalog page <a href="../../../../Buildings/UHRB/HospitalIndex.html" target="_blank">Hospital</a>,  source <a href="../../../../Buildings/UHRB/Hospital.java">Hospital.java</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dResources.html" target="_blank">X3D Resources</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" target="_blank">X3D Scene Authoring Hints</a>, and <a href="https://www.web3d.org/x3d/content/X3dTooltips.html" target="_blank">X3D Tooltips</a>. </p>
	<table style="color:black; border:0px solid; border-spacing:10px 0px;">
        <caption>Scene Meta Information</caption>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center; padding:10px 0px;"><i>meta tags</i></td>
			<td style="text-align:left;   padding:10px 0px;">&nbsp; Document Metadata </td>
		</tr>

		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> title </i> </td>
			<td> <a href="../../../../Buildings/UHRB/Hospital.x3d">Hospital.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> description </i> </td>
			<td> Ultra-high-resolution building (UHRB) example. </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> creator </i> </td>
			<td> Alan Hudson and Justin Couch </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> created </i> </td>
			<td> 1 November 2003 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> translated </i> </td>
			<td> 26 November 2003 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> modified </i> </td>
			<td> 20 October 2019 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="../../../../Buildings/UHRB/xml/Hospital.xml">xml/Hospital.xml</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> subject </i> </td>
			<td> UHRB ultra-high-resolution building format </td>
		</tr>
		<tr style="color:burntorange">
			<td style="text-align:right; vertical-align: text-top;"> <i> warning </i> </td>
			<td> under development </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> identifier </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/Savage/Buildings/UHRB/Hospital.x3d" target="_blank">https://www.web3d.org/x3d/content/examples/Savage/Buildings/UHRB/Hospital.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> generator </i> </td>
			<td> UhrbToX3dBuildingPrototypes1.0.xslt </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> generator </i> </td>
			<td> X3D-Edit 3.2, <a href="https://www.web3d.org/x3d/tools/X3D-Edit" target="_blank">https://www.web3d.org/x3d/tools/X3D-Edit</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> license </i> </td>
			<td> <a href="../../../../Buildings/UHRB/../../license.html">../../license.html</a> </td>
		</tr>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center;" colspan="2">  &nbsp; </td>
		</tr>
	</table>

	<p>
		This program uses the
		<a href="https://www.web3d.org/specifications/java/X3DJSAIL.html" target="_blank">X3D Java Scene Access Interface Library (X3DJSAIL)</a>.
		It has been produced using the 
		<a href="https://www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">X3dToJava.xslt</a>
		stylesheet
	       (<a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">version control</a>)
                which is used to create Java source code from an original <code>.x3d</code> model.
	</p>

	* @author Alan Hudson and Justin Couch
 */

public class Hospital
{
	/** Default constructor to create this object. */
	public Hospital ()
	{
	  initialize();
	}

	/** Create and initialize the X3D model for this object. */
	public final void initialize()
	{
            try { // catch-all
  x3dModel = new X3D().setProfile(X3D.PROFILE_IMMERSIVE).setVersion(X3D.VERSION_3_0)
  .setHead(new head()
    .addMeta(new meta().setName(meta.NAME_TITLE      ).setContent("Hospital.x3d"))
    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("Ultra-high-resolution building (UHRB) example."))
    .addMeta(new meta().setName(meta.NAME_CREATOR    ).setContent("Alan Hudson and Justin Couch"))
    .addMeta(new meta().setName(meta.NAME_CREATED    ).setContent("1 November 2003"))
    .addMeta(new meta().setName(meta.NAME_TRANSLATED ).setContent("26 November 2003"))
    .addMeta(new meta().setName(meta.NAME_MODIFIED   ).setContent("20 October 2019"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("xml/Hospital.xml"))
    .addMeta(new meta().setName(meta.NAME_SUBJECT    ).setContent("UHRB ultra-high-resolution building format"))
    .addMeta(new meta().setName(meta.NAME_WARNING    ).setContent("under development"))
    .addMeta(new meta().setName(meta.NAME_IDENTIFIER ).setContent("https://www.web3d.org/x3d/content/examples/Savage/Buildings/UHRB/Hospital.x3d"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("UhrbToX3dBuildingPrototypes1.0.xslt"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit"))
    .addMeta(new meta().setName(meta.NAME_LICENSE    ).setContent("../../license.html")))
  .addComments(" Issue with this in Xj3D: org.web3d.vrml.lang.InvalidFieldConnectionException: IS access types are not compatible. Source (label) is inputOutput and destination (title) is initializeOnly. found 27 AUG 2015 ")
  .setScene(new Scene()
    .addChild(new ProtoDeclare("Attribute").setName("Attribute")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("label").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("value").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT).setValue("foo")))
      .setProtoBody(new ProtoBody()
        .addChild(new WorldInfo()
          .setIS(new IS()
            .addConnect(new connect().setNodeField("title").setProtoField("label"))))
        .addChild(new WorldInfo()
          .setIS(new IS()
            .addConnect(new connect().setNodeField("title").setProtoField("value"))))))
    .addChild(new ProtoDeclare("Wall").setName("Wall")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("componentLabel").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("description").setType(field.TYPE_MFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("polygon").setType(field.TYPE_SFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("apertures").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("attributes").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("geomDesc").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT)
          .addChild(new Group()
            .addComments(" default ")))
        .addField(new field().setName("zOffset").setType(field.TYPE_SFFLOAT).setAccessType(field.ACCESSTYPE_INPUTOUTPUT).setValue(0.0))
        .addField(new field().setName("built").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY))
        .addField(new field().setName("resolveHit").setType(field.TYPE_SFNODE).setAccessType(field.ACCESSTYPE_INPUTONLY)))
      .setProtoBody(new ProtoBody()
        .addChild(new Group()
          .addChild(new Group("WallGrp")
            .addComments(" default "))
          .addChild(new Group("ApGrp")
            .setIS(new IS()
              .addConnect(new connect().setNodeField("children").setProtoField("apertures")))))
        .addChild(new Script("GenScript").setDirectOutput(true).setUrl(new String[] {"nps.dts.x3d.Wall.class","https://www.web3d.org/x3d/content/examples/Savage/Buildings/UHRB/nps.dts.x3d.Wall.class"})
          .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
          .addField(new field().setName("componentLabel").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
          .addField(new field().setName("polygon").setType(field.TYPE_SFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
          .addField(new field().setName("apertures").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
          .addField(new field().setName("attributes").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
          .addField(new field().setName("children").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
          .addField(new field().setName("zOffset").setType(field.TYPE_SFFLOAT).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
          .addField(new field().setName("resolveHit").setType(field.TYPE_SFNODE).setAccessType(field.ACCESSTYPE_INPUTONLY))
          .addField(new field().setName("recreate").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_INPUTOUTPUT).setValue(true))
          .setIS(new IS()
            .addConnect(new connect().setNodeField("name").setProtoField("name"))
            .addConnect(new connect().setNodeField("componentLabel").setProtoField("componentLabel"))
            .addConnect(new connect().setNodeField("polygon").setProtoField("polygon"))
            .addConnect(new connect().setNodeField("apertures").setProtoField("apertures"))
            .addConnect(new connect().setNodeField("attributes").setProtoField("attributes"))
            .addConnect(new connect().setNodeField("children").setProtoField("geomDesc"))
            .addConnect(new connect().setNodeField("zOffset").setProtoField("zOffset"))
            .addConnect(new connect().setNodeField("resolveHit").setProtoField("resolveHit"))))
        .addChild(new ROUTE().setFromNode("GenScript").setFromField("children").setToNode("WallGrp").setToField("set_children"))))
    .addChild(new ProtoDeclare("Aperture").setName("Aperture")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("componentLabel").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("description").setType(field.TYPE_MFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("polygon").setType(field.TYPE_SFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("attributes").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("built").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY))
        .addField(new field().setName("geomDesc").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTONLY)))
      .setProtoBody(new ProtoBody()
        .addChild(new Group()
          .setIS(new IS()
            .addConnect(new connect().setNodeField("children").setProtoField("geomDesc"))))))
    .addChild(new ProtoDeclare("Ceiling").setName("Ceiling")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("componentLabel").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("description").setType(field.TYPE_MFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("attributes").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("built").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY)))
      .setProtoBody(new ProtoBody()
        .addChild(new Group()
          .addComments(" TODO "))))
    .addChild(new ProtoDeclare("Edge").setName("Edge")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("description").setType(field.TYPE_MFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("vertices").setType(field.TYPE_SFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("wallIndex").setType(field.TYPE_SFINT32).setAccessType(field.ACCESSTYPE_INPUTOUTPUT).setValue(0))
        .addField(new field().setName("built").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY)))
      .setProtoBody(new ProtoBody()
        .addChild(new WorldInfo())))
    .addChild(new ProtoDeclare("Fixture").setName("Fixture")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("componentLabel").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("description").setType(field.TYPE_MFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("center").setType(field.TYPE_SFNODE).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("attributes").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT)
          .addChild(new Group()
            .addComments(" default ")))
        .addField(new field().setName("built").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY)))
      .setProtoBody(new ProtoBody()
        .addChild(new Group()
          .addComments(" default "))))
    .addChild(new ProtoDeclare("Floor").setName("Floor")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("componentLabel").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("description").setType(field.TYPE_MFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("attributes").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT)
          .addChild(new Group()
            .addComments(" default ")))
        .addField(new field().setName("built").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY)))
      .setProtoBody(new ProtoBody()
        .addChild(new Group()
          .addComments(" default "))))
    .addChild(new ProtoDeclare("Room").setName("Room")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("componentLabel").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("description").setType(field.TYPE_MFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("edgeIndex").setType(field.TYPE_MFINT32).setAccessType(field.ACCESSTYPE_INPUTOUTPUT).setValue(new int[] {0}))
        .addField(new field().setName("floor").setType(field.TYPE_SFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("ceiling").setType(field.TYPE_SFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("attributes").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT)
          .addChild(new Group()
            .addComments(" default ")))
        .addField(new field().setName("built").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY)))
      .setProtoBody(new ProtoBody()
        .addChild(new Group()
          .addComments(" default "))))
    .addChild(new ProtoDeclare("Stair").setName("Stair")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("componentLabel").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("description").setType(field.TYPE_MFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("floorLevelIndex").setType(field.TYPE_SFINT32).setAccessType(field.ACCESSTYPE_INITIALIZEONLY).setValue(0))
        .addField(new field().setName("roomIndex").setType(field.TYPE_SFINT32).setAccessType(field.ACCESSTYPE_INITIALIZEONLY).setValue(0))
        .addField(new field().setName("built").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY)))
      .setProtoBody(new ProtoBody()
        .addChild(new Group()
          .addComments(" default "))))
    .addChild(new ProtoDeclare("Staircase").setName("Staircase")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("componentLabel").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("description").setType(field.TYPE_MFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("access").setType(field.TYPE_SFINT32).setAccessType(field.ACCESSTYPE_INITIALIZEONLY).setValue(0))
        .addField(new field().setName("bottomFloorLevelIndex").setType(field.TYPE_SFINT32).setAccessType(field.ACCESSTYPE_INITIALIZEONLY).setValue(0))
        .addField(new field().setName("topFloorLevelIndex").setType(field.TYPE_SFINT32).setAccessType(field.ACCESSTYPE_INITIALIZEONLY).setValue(0))
        .addField(new field().setName("stairs").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("attributes").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT)
          .addChild(new Group()
            .addComments(" default ")))
        .addField(new field().setName("built").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY)))
      .setProtoBody(new ProtoBody()
        .addChild(new Group()
          .addComments(" default "))))
    .addChild(new ProtoDeclare("Roof").setName("Roof")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("componentLabel").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("description").setType(field.TYPE_MFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("zOffset").setType(field.TYPE_SFFLOAT).setAccessType(field.ACCESSTYPE_INITIALIZEONLY).setValue(0))
        .addField(new field().setName("edges").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("walls").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("rooms").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("fixtures").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
        .addField(new field().setName("built").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY)))
      .setProtoBody(new ProtoBody()
        .addChild(new Group()
          .addComments(" default "))))
    .addChild(new ProtoDeclare("FloorLevel").setName("FloorLevel")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("componentLabel").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("zOffset").setType(field.TYPE_SFFLOAT).setAccessType(field.ACCESSTYPE_INPUTOUTPUT).setValue(0))
        .addField(new field().setName("walls").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("edges").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("rooms").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("fixtures").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT)
          .addChild(new Group()
            .addComments(" default ")))
        .addField(new field().setName("built").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY))
        .addField(new field().setName("description").setType(field.TYPE_MFSTRING).setAccessType(field.ACCESSTYPE_INITIALIZEONLY)))
      .setProtoBody(new ProtoBody()
        .addChild(new Transform("TRANS")
          .addChild(new Group()
            .setIS(new IS()
              .addConnect(new connect().setNodeField("children").setProtoField("walls"))))
          .addChild(new Group("Geometry")
            .addComments(" default ")))
        .addChild(new Script("ScriptFloorLevel").setDirectOutput(true).setUrl(new String[] {"nps.dts.x3d.FloorLevel.class","https://www.web3d.org/x3d/content/examples/Savage/Buildings/UHRB/nps.dts.x3d.FloorLevel.class"})
          .addField(new field().setName("walls").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
          .addField(new field().setName("edges").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
          .addField(new field().setName("rooms").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
          .addField(new field().setName("zOffset").setType(field.TYPE_SFFLOAT).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
          .addField(new field().setName("translation").setType(field.TYPE_SFVEC3F).setAccessType(field.ACCESSTYPE_OUTPUTONLY))
          .addField(new field().setName("children").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_OUTPUTONLY))
          .addField(new field().setName("initDone").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY))
          .addField(new field().setName("recreate").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_INPUTONLY))
          .setIS(new IS()
            .addConnect(new connect().setNodeField("walls").setProtoField("walls"))
            .addConnect(new connect().setNodeField("edges").setProtoField("edges"))
            .addConnect(new connect().setNodeField("rooms").setProtoField("rooms"))
            .addConnect(new connect().setNodeField("zOffset").setProtoField("zOffset"))))
        .addChild(new ROUTE().setFromNode("ScriptFloorLevel").setFromField("translation").setToNode("TRANS").setToField("set_translation"))
        .addChild(new ROUTE().setFromNode("ScriptFloorLevel").setFromField("children").setToNode("Geometry").setToField("set_children"))
        .addChild(new ROUTE().setFromNode("ScriptFloorLevel").setFromField("initDone").setToNode("ScriptFloorLevel").setToField("recreate"))))
    .addChild(new ProtoDeclare("Uhrb").setName("Uhrb")
      .setProtoInterface(new ProtoInterface()
        .addField(new field().setName("version").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT).setValue("15"))
        .addField(new field().setName("name").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("componentLabel").setType(field.TYPE_SFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("floorLevels").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("footprint").setType(field.TYPE_SFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("rooflines").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("roof").setType(field.TYPE_SFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("staircases").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("description").setType(field.TYPE_MFSTRING).setAccessType(field.ACCESSTYPE_INPUTOUTPUT))
        .addField(new field().setName("built").setType(field.TYPE_SFBOOL).setAccessType(field.ACCESSTYPE_OUTPUTONLY)))
      .setProtoBody(new ProtoBody()
        .addChild(new Group()
          .addChild(new Group()
            .setIS(new IS()
              .addConnect(new connect().setNodeField("children").setProtoField("floorLevels"))))
          .addChild(new Group("Rooflines")
            .addComments(" default ")))
        .addChild(new Script("ScriptUhrb").setUrl(new String[] {"nps.dts.x3d.Uhrb.class","https://www.web3d.org/x3d/content/examples/Savage/Buildings/UHRB/nps.dts.x3d.Uhrb.class"})
          .addField(new field().setName("rooflines").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_INITIALIZEONLY))
          .addField(new field().setName("children").setType(field.TYPE_MFNODE).setAccessType(field.ACCESSTYPE_OUTPUTONLY))
          .setIS(new IS()
            .addConnect(new connect().setNodeField("rooflines").setProtoField("rooflines"))))
        .addChild(new ROUTE().setFromNode("ScriptUhrb").setFromField("children").setToNode("Rooflines").setToField("set_children"))))
    .addChild(new Viewpoint().setDescription("Front").setPosition(6.0,0.0,35.0))
    .addChild(new Viewpoint().setDescription("Left").setOrientation(0.0,1.0,0.0,-1.57).setPosition(-15.0,0.0,-2.0))
    .addChild(new Viewpoint().setDescription("Right").setOrientation(0.0,1.0,0.0,1.57).setPosition(15.0,0.0,-2.0))
    .addChild(new Viewpoint().setDescription("Back").setOrientation(0.0,1.0,0.0,3.14).setPosition(0.0,0.0,-15.0))
    .addChild(new Background().setGroundAngle(new double[] {1.570796}).setGroundColor(new MFColor(new double[] {0.6,0.9,0.6,0.6,0.9,0.6})).setSkyColor(new MFColor(new double[] {0.6,0.6,0.9})))
    .addChild(new Transform().setTranslation(0.0,-0.02,0.0)
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material().setDiffuseColor(0.6,0.9,0.6).setEmissiveColor(0.6,0.9,0.6)))
        .setGeometry(new Box().setSize(75.0,0.01,75.0))))
    .addChild(new ProtoInstance("Attribute").setContainerField("children")
      .addFieldValue(new fieldValue().setName("label").setValue("test1"))
      .addFieldValue(new fieldValue().setName("value").setValue("test2")))
    .addChild(new ProtoInstance("Uhrb").setContainerField("children")
      .addFieldValue(new fieldValue().setName("name").setValue("Uhrb1"))
      .addFieldValue(new fieldValue().setName("componentLabel").setValue("BUILDING"))
      .addFieldValue(new fieldValue().setName("rooflines")
        .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}))))
      .addFieldValue(new fieldValue().setName("floorLevels")
        .addChild(new ProtoInstance("FloorLevel").setContainerField("children")
          .addFieldValue(new fieldValue().setName("name").setValue("floorLevel1"))
          .addFieldValue(new fieldValue().setName("zOffset").setValue(0.0))
          .addFieldValue(new fieldValue().setName("edges")
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,17.0,6.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,17.0,17.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,0.0,13.5,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,17.0,4.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,17.0,6.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,12.5,17.0,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,7.0,17.0,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,7.0,13.5,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,10.5,0.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,17.0,4.0,0.0,10.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,10.5,4.0,0.0,10.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,5.0,0.0,0.0,10.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,10.5,4.0,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,5.0,4.0,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,0.0,0.0,0.0,2.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,2.5,0.0,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.0,4.0,0.0,2.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,0.0,4.0,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,0.0,0.0,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,2.5,4.0,0.0,2.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,7.0,13.5,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.0,13.5,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,17.0,11.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,17.0,17.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,12.5,11.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,17.0,11.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,12.5,13.5,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,12.5,13.5,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,12.5,17.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,6.0,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,7.0,11.5,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,11.5,0.0,11.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.5,0.0,7.0,11.5,0.0,11.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,2.5,4.0,0.0,1.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,1.5,4.0,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,5.0,13.5,0.0,1.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,1.5,13.5,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,1.5,13.5,0.0,1.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.5,0.0,7.0,13.5,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,6.0,0.0,12.5}))))))
          .addFieldValue(new fieldValue().setName("rooms")
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room0"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {0,24,25,22}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room1"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {0,39,29,30,38,20,21,12,9,4}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room2"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {1,28,27,25,23}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room2"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {2,36,35,20,7,6}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room0"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {3,9,10,8}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room5"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {5,7,26,28}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room1"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {10,12,13,11}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room2"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {13,16,19,15}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room7"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {14,19,33,34,18}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room8"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {16,33,37,35,21}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room9"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {17,34,37,36}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room11"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {24,27,26,38,32,31,39}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("stair-room12"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("STAIR"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {29,30,32,31}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes"))))))
          .addFieldValue(new fieldValue().setName("walls")
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-1").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall7"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,17.0,6.0,3.253,17.0,6.0,3.253,12.5,6.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-2").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall3-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,17.0,17.0,3.253,17.0,17.0,3.253,12.5,17.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,15.999999999999998,17.0,2.0,15.999999999999998,17.0,2.0,14.999999999999998,17.0,1.0,14.999999999999998}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,14.499999999999998,17.0,2.0,14.499999999999998,17.0,2.0,13.499999999999998,17.0,1.0,13.499999999999998}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-3").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall4-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,0.0,17.0,3.253,0.0,13.5,3.253,0.0,13.5,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {16.0,1.0,0.0,16.0,2.0,0.0,15.0,2.0,0.0,15.0,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {14.5,1.0,0.0,14.5,2.0,0.0,13.5,2.0,0.0,13.5,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-4").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall2-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,17.0,0.0,3.253,17.0,4.0,3.253,17.0,4.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {1.0,1.0,17.0,1.0,2.0,17.0,2.0,2.0,17.0,2.0,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {2.5,1.0,17.0,2.5,2.0,17.0,3.5,2.0,17.0,3.5,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-5").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall2-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,17.0,4.0,3.253,17.0,6.0,3.253,17.0,6.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.5,0.0,17.0,4.5,2.25,17.0,5.5,2.25,17.0,5.5,0.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-6").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall3-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,12.5,17.0,3.253,12.5,17.0,3.253,7.0,17.0,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,7.999999999999999,17.0,2.0,7.999999999999999,17.0,2.0,8.999999999999998,17.0,1.0,8.999999999999998}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,10.499999999999998,17.0,2.0,10.499999999999998,17.0,2.0,11.499999999999998,17.0,1.0,11.499999999999998}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-7").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall3-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,7.0,17.0,3.253,7.0,17.0,3.253,0.0,17.0,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture3"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,4.999999999999999,17.0,2.0,4.999999999999999,17.0,2.0,5.999999999999999,17.0,1.0,5.999999999999999}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,0.999999999999999,17.0,2.0,0.999999999999999,17.0,2.0,1.999999999999999,17.0,1.0,1.999999999999999}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture3"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,2.999999999999999,17.0,2.0,2.999999999999999,17.0,2.0,3.999999999999999,17.0,1.0,3.999999999999999}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-8").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall15-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,7.0,17.0,3.253,7.0,13.5,3.253,7.0,13.5,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-9").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,10.5,0.0,3.253,10.5,0.0,3.253,17.0,0.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {3.3677786976552215E-16,1.0,16.0,3.3677786976552215E-16,2.0,16.0,2.755455298081546E-16,2.0,15.0,2.755455298081546E-16,1.0,15.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {2.449293598294707E-16,1.0,14.5,2.449293598294707E-16,2.0,14.5,1.8369701987210302E-16,2.0,13.5,1.8369701987210302E-16,1.0,13.5}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture3"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {1.2246467991473535E-16,1.0,12.5,1.2246467991473535E-16,2.0,12.5,6.123233995736767E-17,2.0,11.5,6.123233995736767E-17,1.0,11.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-10").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,17.0,4.0,3.253,17.0,4.0,3.253,10.5,4.0,0.0,10.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,11.0,4.0,2.25,11.0,4.0,2.25,12.0,4.0,0.0,12.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-11").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall20-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,10.5,0.0,3.253,10.5,4.0,3.253,10.5,4.0,0.0,10.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-12").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a-a-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,5.0,0.0,3.253,5.0,0.0,3.253,10.5,0.0,0.0,10.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {2.7554552980815443E-16,1.0,9.5,2.7554552980815443E-16,2.0,9.5,2.1431318985078676E-16,2.0,8.5,2.1431318985078676E-16,1.0,8.5}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {1.224646799147353E-16,1.0,7.0,1.224646799147353E-16,2.0,7.0,6.123233995736762E-17,2.0,6.0,6.123233995736762E-17,1.0,6.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-13").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,10.5,4.0,3.253,10.5,4.0,3.253,5.0,4.0,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.5,4.0,2.25,5.5,4.0,2.25,6.5,4.0,0.0,6.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-14").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall24-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,5.0,0.0,3.253,5.0,4.0,3.253,5.0,4.0,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-15").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a-a-a-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,0.0,0.0,3.253,0.0,0.0,3.253,2.5,0.0,0.0,2.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.123233995736766E-17,1.0,1.0,6.123233995736766E-17,2.0,1.0,1.2246467991473532E-16,2.0,2.0,1.2246467991473532E-16,1.0,2.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-16").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a-a-a-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,2.5,0.0,3.253,2.5,0.0,3.253,5.0,0.0,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {3.061616997868381E-17,1.0,3.0,3.061616997868381E-17,2.0,3.0,9.184850993605148E-17,2.0,4.0,9.184850993605148E-17,1.0,4.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-17").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.0,4.0,3.253,5.0,4.0,3.253,2.5,4.0,0.0,2.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {3.9999999999999996,0.0,3.4999999999999996,3.9999999999999996,2.25,3.4999999999999996,4.0,2.25,4.5,4.0,0.0,4.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-18").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall4-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,0.0,13.5,3.253,0.0,4.0,3.253,0.0,4.0,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,0.0,4.0,2.5,0.0,6.5,2.5,0.0,6.5,0.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {7.0,0.0,0.0,7.0,2.5,0.0,9.5,2.5,0.0,9.5,0.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture3"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {10.0,0.0,0.0,10.0,2.5,0.0,12.5,2.5,0.0,12.5,0.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-19").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall4-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,0.0,4.0,3.253,0.0,0.0,3.253,0.0,0.0,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {1.0,1.0,0.0,1.0,2.0,0.0,2.0,2.0,0.0,2.0,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {2.5,1.0,0.0,2.5,2.0,0.0,3.5,2.0,0.0,3.5,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-20").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall28"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,2.5,0.0,3.253,2.5,4.0,3.253,2.5,4.0,0.0,2.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-21").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,7.0,13.5,3.253,7.0,13.5,3.253,5.0,13.5,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,5.499999999999999,13.5,2.25,5.499999999999999,13.5,2.25,6.499999999999999,13.5,0.0,6.499999999999999}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-22").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall31-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.0,4.0,3.253,5.0,13.5,3.253,5.0,13.5,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {7.0,0.0,5.0,7.0,2.5,5.0,9.5,2.5,5.0,9.5,0.0,5.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-23").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall2-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,17.0,6.0,3.253,17.0,11.0,3.253,17.0,11.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {10.0,1.0,17.0,10.0,2.0,17.0,9.0,2.0,17.0,9.0,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {8.0,1.0,17.0,8.0,2.0,17.0,7.0,2.0,17.0,7.0,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-24").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall2-b-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,17.0,11.0,3.253,17.0,17.0,3.253,17.0,17.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {15.5,1.0,17.0,15.5,2.0,17.0,14.5,2.0,17.0,14.5,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,1.0,17.0,13.5,2.0,17.0,12.5,2.0,17.0,12.5,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-25").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall9-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,12.5,6.0,3.253,12.5,11.0,3.253,12.5,11.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.5,0.0,12.5,6.5,2.25,12.5,7.5,2.25,12.5,7.5,0.0,12.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-26").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall27-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,17.0,11.0,3.253,17.0,11.0,3.253,12.5,11.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-27").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,12.5,13.5,3.253,12.5,13.5,3.253,7.0,13.5,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,11.0,13.5,2.25,11.0,13.5,2.25,12.0,13.5,0.0,12.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-28").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall9-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,12.5,11.0,3.253,12.5,13.5,3.253,12.5,13.5,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.5,0.0,12.5,11.5,2.25,12.5,12.5,2.25,12.5,12.5,0.0,12.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-29").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall9-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,12.5,13.5,3.253,12.5,17.0,3.253,12.5,17.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-30").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall33"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,6.0,3.253,11.0,6.0,3.253,7.0,6.0,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-31").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall34-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,7.0,6.0,3.253,7.0,11.5,3.253,7.0,11.5,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {9.5,0.0,7.0,9.5,2.25,7.0,10.5,2.25,7.0,10.5,0.0,7.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-32").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall32-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,6.0,3.253,11.0,11.5,3.253,11.0,11.5,0.0,11.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-33").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall35-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.5,0.0,7.0,11.5,3.253,7.0,11.5,3.253,11.0,11.5,0.0,11.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-34").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-b-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,2.5,4.0,3.253,2.5,4.0,3.253,1.5,4.0,0.0,1.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,1.4999999999999998,4.0,2.25,1.4999999999999998,4.0,2.25,2.4999999999999996,4.0,0.0,2.4999999999999996}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-35").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-b-b-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,1.5,4.0,3.253,1.5,4.0,3.253,0.0,4.0,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-36").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,5.0,13.5,3.253,5.0,13.5,3.253,1.5,13.5,0.0,1.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-37").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-b-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,1.5,13.5,3.253,1.5,13.5,3.253,0.0,13.5,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-38").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall36"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,1.5,4.0,2.25,1.5,13.5,2.25,1.5,13.5,0.0,1.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {7.0,0.0,1.5,7.0,2.5,1.5,10.0,2.5,1.5,10.0,0.0,1.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))))
        .addChild(new ProtoInstance("FloorLevel").setContainerField("children")
          .addFieldValue(new fieldValue().setName("name").setValue("floorLevel2"))
          .addFieldValue(new fieldValue().setName("zOffset").setValue(3.253))
          .addFieldValue(new fieldValue().setName("edges")
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,17.0,6.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,17.0,17.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,0.0,13.5,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,17.0,4.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,17.0,6.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,12.5,17.0,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,7.0,17.0,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,7.0,13.5,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,10.5,0.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,17.0,4.0,0.0,10.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,10.5,4.0,0.0,10.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,5.0,0.0,0.0,10.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,10.5,4.0,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,5.0,4.0,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,0.0,0.0,0.0,2.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,2.5,0.0,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.0,4.0,0.0,2.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,0.0,4.0,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,0.0,0.0,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,7.0,13.5,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.0,13.5,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,17.0,11.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,17.0,17.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,12.5,11.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,17.0,11.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,12.5,13.5,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,12.5,13.5,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,12.5,17.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,6.0,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,7.0,11.5,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,11.5,0.0,11.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.5,0.0,7.0,11.5,0.0,11.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,2.5,4.0,0.0,1.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,1.5,4.0,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,5.0,13.5,0.0,1.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,1.5,13.5,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.5,0.0,7.0,13.5,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,6.0,0.0,12.5}))))))
          .addFieldValue(new fieldValue().setName("rooms")
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room0"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {0,23,24,21}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room1"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {0,37,28,29,36,19,20,12,9,4}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room2"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {1,27,26,24,22}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room2"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {2,35,34,19,7,6}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room0"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {3,9,10,8}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room5"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {5,7,25,27}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room1"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {10,12,13,11}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room6"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {13,16,32,33,18,14,15}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room7"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {16,32,33,17,35,34,20}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room9"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {23,26,25,36,31,30,37}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("stair-room10"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("STAIR"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {28,29,31,30}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes"))))))
          .addFieldValue(new fieldValue().setName("walls")
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-39").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall7"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,17.0,6.0,3.253,17.0,6.0,3.253,12.5,6.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-40").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall3-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,17.0,17.0,3.253,17.0,17.0,3.253,12.5,17.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,15.999999999999998,17.0,2.0,15.999999999999998,17.0,2.0,14.999999999999998,17.0,1.0,14.999999999999998}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,14.499999999999998,17.0,2.0,14.499999999999998,17.0,2.0,13.499999999999998,17.0,1.0,13.499999999999998}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-41").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall4-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,0.0,17.0,3.253,0.0,13.5,3.253,0.0,13.5,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {16.0,1.0,0.0,16.0,2.0,0.0,15.0,2.0,0.0,15.0,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {14.5,1.0,0.0,14.5,2.0,0.0,13.5,2.0,0.0,13.5,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-42").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall2-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,17.0,0.0,3.253,17.0,4.0,3.253,17.0,4.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {1.0,1.0,17.0,1.0,2.0,17.0,2.0,2.0,17.0,2.0,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {2.5,1.0,17.0,2.5,2.0,17.0,3.5,2.0,17.0,3.5,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-43").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall2-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,17.0,4.0,3.253,17.0,6.0,3.253,17.0,6.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.5,1.0,17.0,4.5,2.0,17.0,5.5,2.0,17.0,5.5,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-44").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall3-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,12.5,17.0,3.253,12.5,17.0,3.253,7.0,17.0,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,7.999999999999999,17.0,2.0,7.999999999999999,17.0,2.0,8.999999999999998,17.0,1.0,8.999999999999998}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,10.499999999999998,17.0,2.0,10.499999999999998,17.0,2.0,11.499999999999998,17.0,1.0,11.499999999999998}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-45").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall3-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,7.0,17.0,3.253,7.0,17.0,3.253,0.0,17.0,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture3"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,4.999999999999999,17.0,2.0,4.999999999999999,17.0,2.0,5.999999999999999,17.0,1.0,5.999999999999999}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,0.999999999999999,17.0,2.0,0.999999999999999,17.0,2.0,1.999999999999999,17.0,1.0,1.999999999999999}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture3"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,2.999999999999999,17.0,2.0,2.999999999999999,17.0,2.0,3.999999999999999,17.0,1.0,3.999999999999999}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-46").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall15-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,7.0,17.0,3.253,7.0,13.5,3.253,7.0,13.5,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-47").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,10.5,0.0,3.253,10.5,0.0,3.253,17.0,0.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {3.3677786976552215E-16,1.0,16.0,3.3677786976552215E-16,2.0,16.0,2.755455298081546E-16,2.0,15.0,2.755455298081546E-16,1.0,15.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {2.449293598294707E-16,1.0,14.5,2.449293598294707E-16,2.0,14.5,1.8369701987210302E-16,2.0,13.5,1.8369701987210302E-16,1.0,13.5}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture3"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {1.2246467991473535E-16,1.0,12.5,1.2246467991473535E-16,2.0,12.5,6.123233995736767E-17,2.0,11.5,6.123233995736767E-17,1.0,11.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-48").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,17.0,4.0,3.253,17.0,4.0,3.253,10.5,4.0,0.0,10.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,11.0,4.0,2.25,11.0,4.0,2.25,12.0,4.0,0.0,12.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-49").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall20-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,10.5,0.0,3.253,10.5,4.0,3.253,10.5,4.0,0.0,10.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-50").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a-a-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,5.0,0.0,3.253,5.0,0.0,3.253,10.5,0.0,0.0,10.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {2.7554552980815443E-16,1.0,9.5,2.7554552980815443E-16,2.0,9.5,2.1431318985078676E-16,2.0,8.5,2.1431318985078676E-16,1.0,8.5}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {1.224646799147353E-16,1.0,7.0,1.224646799147353E-16,2.0,7.0,6.123233995736762E-17,2.0,6.0,6.123233995736762E-17,1.0,6.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-51").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,10.5,4.0,3.253,10.5,4.0,3.253,5.0,4.0,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.5,4.0,2.25,5.5,4.0,2.25,6.5,4.0,0.0,6.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-52").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall24-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,5.0,0.0,3.253,5.0,4.0,3.253,5.0,4.0,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-53").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a-a-a-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,0.0,0.0,3.253,0.0,0.0,3.253,2.5,0.0,0.0,2.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.123233995736766E-17,1.0,1.0,6.123233995736766E-17,2.0,1.0,1.2246467991473532E-16,2.0,2.0,1.2246467991473532E-16,1.0,2.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-54").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a-a-a-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,2.5,0.0,3.253,2.5,0.0,3.253,5.0,0.0,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {3.061616997868381E-17,1.0,3.0,3.061616997868381E-17,2.0,3.0,9.184850993605148E-17,2.0,4.0,9.184850993605148E-17,1.0,4.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-55").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.0,4.0,3.253,5.0,4.0,3.253,2.5,4.0,0.0,2.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {3.9999999999999996,0.0,3.4999999999999996,3.9999999999999996,2.25,3.4999999999999996,4.0,2.25,4.5,4.0,0.0,4.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-56").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall4-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,0.0,13.5,3.253,0.0,4.0,3.253,0.0,4.0,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {5.5,1.0,0.0,5.5,2.0,0.0,6.5,2.0,0.0,6.5,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {8.0,1.0,0.0,8.0,2.0,0.0,9.0,2.0,0.0,9.0,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture3"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {10.5,1.0,0.0,10.5,2.0,0.0,11.5,2.0,0.0,11.5,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-57").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall4-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,0.0,4.0,3.253,0.0,0.0,3.253,0.0,0.0,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {1.0,1.0,0.0,1.0,2.0,0.0,2.0,2.0,0.0,2.0,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {2.5,1.0,0.0,2.5,2.0,0.0,3.5,2.0,0.0,3.5,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-58").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,7.0,13.5,3.253,7.0,13.5,3.253,5.0,13.5,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,5.499999999999999,13.5,2.25,5.499999999999999,13.5,2.25,6.499999999999999,13.5,0.0,6.499999999999999}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-59").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall31-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.0,4.0,3.253,5.0,13.5,3.253,5.0,13.5,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {7.0,0.0,5.0,7.0,2.5,5.0,9.5,2.5,5.0,9.5,0.0,5.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-60").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall2-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,17.0,6.0,3.253,17.0,11.0,3.253,17.0,11.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {10.0,1.0,17.0,10.0,2.0,17.0,9.0,2.0,17.0,9.0,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {8.0,1.0,17.0,8.0,2.0,17.0,7.0,2.0,17.0,7.0,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-61").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall2-b-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,17.0,11.0,3.253,17.0,17.0,3.253,17.0,17.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {15.5,1.0,17.0,15.5,2.0,17.0,14.5,2.0,17.0,14.5,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,1.0,17.0,13.5,2.0,17.0,12.5,2.0,17.0,12.5,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-62").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall9-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,12.5,6.0,3.253,12.5,11.0,3.253,12.5,11.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.5,0.0,12.5,6.5,2.25,12.5,7.5,2.25,12.5,7.5,0.0,12.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-63").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall27-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,17.0,11.0,3.253,17.0,11.0,3.253,12.5,11.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-64").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,12.5,13.5,3.253,12.5,13.5,3.253,7.0,13.5,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,11.0,13.5,2.25,11.0,13.5,2.25,12.0,13.5,0.0,12.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-65").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall9-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,12.5,11.0,3.253,12.5,13.5,3.253,12.5,13.5,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.5,0.0,12.5,11.5,2.25,12.5,12.5,2.25,12.5,12.5,0.0,12.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-66").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall9-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,12.5,13.5,3.253,12.5,17.0,3.253,12.5,17.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-67").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall33"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,6.0,3.253,11.0,6.0,3.253,7.0,6.0,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-68").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall34-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,7.0,6.0,3.253,7.0,11.5,3.253,7.0,11.5,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {9.5,0.0,7.0,9.5,2.25,7.0,10.5,2.25,7.0,10.5,0.0,7.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {7.0,0.0,7.0,7.0,2.25,7.0,8.0,2.25,7.0,8.0,0.0,7.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-69").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall32-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,6.0,3.253,11.0,11.5,3.253,11.0,11.5,0.0,11.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-70").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall35-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.5,0.0,7.0,11.5,3.253,7.0,11.5,3.253,11.0,11.5,0.0,11.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-71").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-b-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,2.5,4.0,3.253,2.5,4.0,3.253,1.5,4.0,0.0,1.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,1.4999999999999998,4.0,2.25,1.4999999999999998,4.0,2.25,2.4999999999999996,4.0,0.0,2.4999999999999996}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-72").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-b-b-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,1.5,4.0,3.253,1.5,4.0,3.253,0.0,4.0,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-73").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,5.0,13.5,3.253,5.0,13.5,3.253,1.5,13.5,0.0,1.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-74").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-b-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,1.5,13.5,3.253,1.5,13.5,3.253,0.0,13.5,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))))
        .addChild(new ProtoInstance("FloorLevel").setContainerField("children")
          .addFieldValue(new fieldValue().setName("name").setValue("floorLevel3"))
          .addFieldValue(new fieldValue().setName("zOffset").setValue(6.506))
          .addFieldValue(new fieldValue().setName("edges")
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,17.0,6.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,17.0,17.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,0.0,13.5,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,17.0,4.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,17.0,6.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,12.5,17.0,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,7.0,17.0,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,7.0,13.5,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,10.5,0.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,17.0,4.0,0.0,10.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,10.5,4.0,0.0,10.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,5.0,0.0,0.0,10.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,10.5,4.0,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,5.0,4.0,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,0.0,0.0,0.0,2.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,2.5,0.0,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.0,4.0,0.0,2.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,0.0,4.0,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,0.0,0.0,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,7.0,13.5,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.0,13.5,0.0,5.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,17.0,11.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,17.0,17.0,0.0,17.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,12.5,11.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,17.0,11.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,12.5,13.5,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,12.5,13.5,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,12.5,17.0,0.0,12.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,6.0,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,7.0,11.5,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,11.5,0.0,11.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.5,0.0,7.0,11.5,0.0,11.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,2.5,4.0,0.0,1.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,1.5,4.0,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,5.0,13.5,0.0,1.5})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,1.5,13.5,0.0,0.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.5,0.0,7.0,13.5,0.0,7.0})))))
            .addChild(new ProtoInstance("Edge").setContainerField("children")
              .addFieldValue(new fieldValue().setName("vertices")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,6.0,0.0,12.5}))))))
          .addFieldValue(new fieldValue().setName("rooms")
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room0"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {0,23,24,21}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room1"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {0,37,28,29,36,19,20,12,9,4}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room2"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {1,27,26,24,22}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room2"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {2,35,34,19,7,6}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room0"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {3,9,10,8}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room5"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {5,7,25,27}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room1"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {10,12,13,11}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room6"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {13,16,32,33,18,14,15}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room7"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {16,32,33,17,35,34,20}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room9"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {23,26,25,36,31,30,37}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes")))))
            .addChild(new ProtoInstance("Room").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("room6"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOM"))
              .addFieldValue(new fieldValue().setName("edgeIndex").setValue(new int[] {28,29,31,30}))
              .addFieldValue(new fieldValue().setName("floor")
                .addChild(new ProtoInstance("Floor").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("floor"))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("ceiling")
                .addChild(new ProtoInstance("Ceiling").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("ceiling"))
                  .addFieldValue(new fieldValue().setName("attributes"))))))
          .addFieldValue(new fieldValue().setName("walls")
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-75").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall7"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,17.0,6.0,3.253,17.0,6.0,3.253,12.5,6.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-76").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall3-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,17.0,17.0,3.253,17.0,17.0,3.253,12.5,17.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,15.999999999999998,17.0,2.0,15.999999999999998,17.0,2.0,14.999999999999998,17.0,1.0,14.999999999999998}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,14.499999999999998,17.0,2.0,14.499999999999998,17.0,2.0,13.499999999999998,17.0,1.0,13.499999999999998}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-77").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall4-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,0.0,17.0,3.253,0.0,13.5,3.253,0.0,13.5,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {16.0,1.0,0.0,16.0,2.0,0.0,15.0,2.0,0.0,15.0,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {14.5,1.0,0.0,14.5,2.0,0.0,13.5,2.0,0.0,13.5,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-78").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall2-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,17.0,0.0,3.253,17.0,4.0,3.253,17.0,4.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {1.0,1.0,17.0,1.0,2.0,17.0,2.0,2.0,17.0,2.0,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {2.5,1.0,17.0,2.5,2.0,17.0,3.5,2.0,17.0,3.5,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-79").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall2-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,17.0,4.0,3.253,17.0,6.0,3.253,17.0,6.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.5,1.0,17.0,4.5,2.0,17.0,5.5,2.0,17.0,5.5,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-80").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall3-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,12.5,17.0,3.253,12.5,17.0,3.253,7.0,17.0,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,7.999999999999999,17.0,2.0,7.999999999999999,17.0,2.0,8.999999999999998,17.0,1.0,8.999999999999998}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,10.499999999999998,17.0,2.0,10.499999999999998,17.0,2.0,11.499999999999998,17.0,1.0,11.499999999999998}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-81").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall3-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,7.0,17.0,3.253,7.0,17.0,3.253,0.0,17.0,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture3"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,4.999999999999999,17.0,2.0,4.999999999999999,17.0,2.0,5.999999999999999,17.0,1.0,5.999999999999999}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,0.999999999999999,17.0,2.0,0.999999999999999,17.0,2.0,1.999999999999999,17.0,1.0,1.999999999999999}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture3"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,1.0,2.999999999999999,17.0,2.0,2.999999999999999,17.0,2.0,3.999999999999999,17.0,1.0,3.999999999999999}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-82").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall15-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {17.0,0.0,7.0,17.0,3.253,7.0,13.5,3.253,7.0,13.5,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-83").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,10.5,0.0,3.253,10.5,0.0,3.253,17.0,0.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {3.3677786976552215E-16,1.0,16.0,3.3677786976552215E-16,2.0,16.0,2.755455298081546E-16,2.0,15.0,2.755455298081546E-16,1.0,15.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {2.449293598294707E-16,1.0,14.5,2.449293598294707E-16,2.0,14.5,1.8369701987210302E-16,2.0,13.5,1.8369701987210302E-16,1.0,13.5}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture3"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {1.2246467991473535E-16,1.0,12.5,1.2246467991473535E-16,2.0,12.5,6.123233995736767E-17,2.0,11.5,6.123233995736767E-17,1.0,11.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-84").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,17.0,4.0,3.253,17.0,4.0,3.253,10.5,4.0,0.0,10.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,11.0,4.0,2.25,11.0,4.0,2.25,12.0,4.0,0.0,12.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-85").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall20-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,10.5,0.0,3.253,10.5,4.0,3.253,10.5,4.0,0.0,10.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-86").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a-a-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,5.0,0.0,3.253,5.0,0.0,3.253,10.5,0.0,0.0,10.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {2.7554552980815443E-16,1.0,9.5,2.7554552980815443E-16,2.0,9.5,2.1431318985078676E-16,2.0,8.5,2.1431318985078676E-16,1.0,8.5}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {1.224646799147353E-16,1.0,7.0,1.224646799147353E-16,2.0,7.0,6.123233995736762E-17,2.0,6.0,6.123233995736762E-17,1.0,6.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-87").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,10.5,4.0,3.253,10.5,4.0,3.253,5.0,4.0,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.5,4.0,2.25,5.5,4.0,2.25,6.5,4.0,0.0,6.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-88").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall24-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,5.0,0.0,3.253,5.0,4.0,3.253,5.0,4.0,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-89").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a-a-a-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,0.0,0.0,3.253,0.0,0.0,3.253,2.5,0.0,0.0,2.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.123233995736766E-17,1.0,1.0,6.123233995736766E-17,2.0,1.0,1.2246467991473532E-16,2.0,2.0,1.2246467991473532E-16,1.0,2.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-90").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a-a-a-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,2.5,0.0,3.253,2.5,0.0,3.253,5.0,0.0,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {3.061616997868381E-17,1.0,3.0,3.061616997868381E-17,2.0,3.0,9.184850993605148E-17,2.0,4.0,9.184850993605148E-17,1.0,4.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-91").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.0,4.0,3.253,5.0,4.0,3.253,2.5,4.0,0.0,2.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {3.9999999999999996,0.0,3.4999999999999996,3.9999999999999996,2.25,3.4999999999999996,4.0,2.25,4.5,4.0,0.0,4.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-92").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall4-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,0.0,13.5,3.253,0.0,4.0,3.253,0.0,4.0,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {5.5,1.0,0.0,5.5,2.0,0.0,6.5,2.0,0.0,6.5,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {8.0,1.0,0.0,8.0,2.0,0.0,9.0,2.0,0.0,9.0,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture3"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {10.5,1.0,0.0,10.5,2.0,0.0,11.5,2.0,0.0,11.5,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-93").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall4-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,0.0,4.0,3.253,0.0,0.0,3.253,0.0,0.0,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {1.0,1.0,0.0,1.0,2.0,0.0,2.0,2.0,0.0,2.0,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {2.5,1.0,0.0,2.5,2.0,0.0,3.5,2.0,0.0,3.5,1.0,0.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-94").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,7.0,13.5,3.253,7.0,13.5,3.253,5.0,13.5,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,5.499999999999999,13.5,2.25,5.499999999999999,13.5,2.25,6.499999999999999,13.5,0.0,6.499999999999999}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-95").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall31-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,5.0,4.0,3.253,5.0,13.5,3.253,5.0,13.5,0.0,5.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {7.0,0.0,5.0,7.0,2.5,5.0,9.5,2.5,5.0,9.5,0.0,5.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-96").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall2-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,17.0,6.0,3.253,17.0,11.0,3.253,17.0,11.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {10.0,1.0,17.0,10.0,2.0,17.0,9.0,2.0,17.0,9.0,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {8.0,1.0,17.0,8.0,2.0,17.0,7.0,2.0,17.0,7.0,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-97").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall2-b-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,17.0,11.0,3.253,17.0,17.0,3.253,17.0,17.0,0.0,17.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {15.5,1.0,17.0,15.5,2.0,17.0,14.5,2.0,17.0,14.5,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("WINDOW"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,1.0,17.0,13.5,2.0,17.0,12.5,2.0,17.0,12.5,1.0,17.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-98").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall9-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,12.5,6.0,3.253,12.5,11.0,3.253,12.5,11.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.5,0.0,12.5,6.5,2.25,12.5,7.5,2.25,12.5,7.5,0.0,12.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-99").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall27-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,17.0,11.0,3.253,17.0,11.0,3.253,12.5,11.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-100").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,12.5,13.5,3.253,12.5,13.5,3.253,7.0,13.5,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,11.0,13.5,2.25,11.0,13.5,2.25,12.0,13.5,0.0,12.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-101").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall9-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.0,0.0,12.5,11.0,3.253,12.5,13.5,3.253,12.5,13.5,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.5,0.0,12.5,11.5,2.25,12.5,12.5,2.25,12.5,12.5,0.0,12.5}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-102").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall9-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,12.5,13.5,3.253,12.5,17.0,3.253,12.5,17.0,0.0,12.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-103").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall33"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,6.0,3.253,11.0,6.0,3.253,7.0,6.0,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-104").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall34-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,7.0,6.0,3.253,7.0,11.5,3.253,7.0,11.5,0.0,7.0}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {9.5,0.0,7.0,9.5,2.25,7.0,10.5,2.25,7.0,10.5,0.0,7.0}))))
                  .addFieldValue(new fieldValue().setName("attributes")))
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture2"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {7.0,0.0,7.0,7.0,2.25,7.0,8.0,2.25,7.0,8.0,0.0,7.0}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-105").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall32-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {6.0,0.0,11.0,6.0,3.253,11.0,11.5,3.253,11.0,11.5,0.0,11.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-106").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall35-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("EXTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {11.5,0.0,7.0,11.5,3.253,7.0,11.5,3.253,11.0,11.5,0.0,11.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-107").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-b-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,2.5,4.0,3.253,2.5,4.0,3.253,1.5,4.0,0.0,1.5}))))
              .addFieldValue(new fieldValue().setName("apertures")
                .addChild(new ProtoInstance("Aperture").setContainerField("children")
                  .addFieldValue(new fieldValue().setName("name").setValue("aperture1"))
                  .addFieldValue(new fieldValue().setName("componentLabel").setValue("DOOR"))
                  .addFieldValue(new fieldValue().setName("polygon")
                    .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,1.4999999999999998,4.0,2.25,1.4999999999999998,4.0,2.25,2.4999999999999996,4.0,0.0,2.4999999999999996}))))
                  .addFieldValue(new fieldValue().setName("attributes"))))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-108").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall13-b-b-b-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {4.0,0.0,1.5,4.0,3.253,1.5,4.0,3.253,0.0,4.0,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-109").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-b-b-a"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,5.0,13.5,3.253,5.0,13.5,3.253,1.5,13.5,0.0,1.5}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes")))
            .addChild(new ProtoInstance("Wall", "Uhrb-Wall-110").setContainerField("children")
              .addFieldValue(new fieldValue().setName("name").setValue("wall11-b-b-b"))
              .addFieldValue(new fieldValue().setName("componentLabel").setValue("INTERIOR_WALL"))
              .addFieldValue(new fieldValue().setName("zOffset").setValue(1))
              .addFieldValue(new fieldValue().setName("polygon")
                .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {13.5,0.0,1.5,13.5,3.253,1.5,13.5,3.253,0.0,13.5,0.0,0.0}))))
              .addFieldValue(new fieldValue().setName("apertures"))
              .addFieldValue(new fieldValue().setName("attributes"))))))
      .addFieldValue(new fieldValue().setName("footprint")
        .addChild(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}))))
      .addFieldValue(new fieldValue().setName("roof")
        .addChild(new ProtoInstance("Roof").setContainerField("children")
          .addFieldValue(new fieldValue().setName("name").setValue("roof"))
          .addFieldValue(new fieldValue().setName("componentLabel").setValue("ROOF_ASSEMBLY"))))));
            }
            catch (Exception ex)
            {       
                System.err.println ("*** Further hints on X3DJSAIL errors and exceptions at");
                System.err.println ("*** https://www.web3d.org/specifications/java/X3DJSAIL.html");
                throw (ex);
            }
	}
	// end of initialize() method

	/** The initialized model object, created within initialize() method. */
	private X3D x3dModel;

	/** 
	 * Provide a 
	 * <a href="https://dzone.com/articles/java-copy-shallow-vs-deep-in-which-you-will-swim" target="_blank">shallow copy</a>
	 * of the X3D model.
	 * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html">X3D</a>
	 * @return Hospital model
	 */
	public X3D getX3dModel()
	{	  
		return x3dModel;
	}
	   
    /** 
     * Default main() method provided for test purposes, uses CommandLine to set global ConfigurationProperties for this object.
     * @param args array of input parameters, provided as arguments
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#handleArguments-java.lang.String:A-">X3D.handleArguments(args)</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#validationReport--">X3D.validationReport()</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html">CommandLine</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE">CommandLine.USAGE</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html">ConfigurationProperties</a>
     */
    public static void main(String args[])
    {
        System.out.println("Build this X3D model, showing validation diagnostics...");
        X3D thisExampleX3dModel = new Hospital().getX3dModel();
//      System.out.println("X3D model construction complete.");
	
        // next handle command line arguments
        boolean hasArguments = (args != null) && (args.length > 0);
        boolean validate = true; // default
        boolean argumentsLoadNewModel = false;
        String  fileName = new String();

        if (args != null)
        {
                for (String arg : args)
                {
                        if (arg.toLowerCase().startsWith("-v") || arg.toLowerCase().contains("validate"))
                        {
                                validate = true; // making sure
                        }
                        if (arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3D) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_CLASSICVRML) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3DB) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_VRML97) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_EXI) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_GZIP) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_ZIP) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_HTML) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_XHTML))
                        {
                                argumentsLoadNewModel = true;
                                fileName = arg;
                        }
                }
        }
        if      (argumentsLoadNewModel)
                System.out.println("WARNING: \"Savage.Buildings.UHRB.Hospital\" model invocation is attempting to load file \"" + fileName + "\" instead of simply validating itself... file loading ignored.");
        else if (hasArguments) // if no arguments provided, this method produces usage warning
                thisExampleX3dModel.handleArguments(args);
	
        if (validate)
        {
            //  System.out.println("--- TODO fix duplicated outputs ---"); // omit when duplicated outputs problem is solved/refactored
		String validationResults = thisExampleX3dModel.validationReport();
            //  System.out.println("-----------------------------------"); // omit when duplicated outputs problem is solved/refactored
                System.out.print("Savage.Buildings.UHRB.Hospital self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

                // experimental: test X3DJSAIL output files
                // Buildings/UHRB/Hospital_JavaExport.* file validation is checked when building X3D Example Archives
                String filenameX3D  = "Buildings/UHRB/Hospital_JavaExport.x3d"; 
                String filenameX3DV = "Buildings/UHRB/Hospital_JavaExport.x3dv"; 
                String filenameJSON = "Buildings/UHRB/Hospital_JavaExport.json";
                thisExampleX3dModel.toFileX3D        (filenameX3D);
                thisExampleX3dModel.toFileClassicVRML(filenameX3DV);
// TODO         thisExampleX3dModel.toFileJSON       (filenameJSON);
        }
    }
}
