public void search(String polygonId){
		CompositeSurface compositeSurface = (CompositeSurface)surfaceMemberElement.getParent();// These four lines need to be

		SurfaceProperty surfaceProperty = (SurfaceProperty)compositeSurface.getParent();// made also for refered multisurface object

		Solid solid = (Solid)surfaceProperty.getParent();								// made also for refered multisurface object

		SolidProperty solidProperty = (SolidProperty)solid.getParent();					// made also for refered multisurface object
		
		
		// test if polygonId is searched within Building or BuildingPart instance
		if((solidProperty.getParent()) instanceof BuildingPart){
			BuildingPart buildingPart = (BuildingPart)solidProperty.getParent();
			listSurfaceProperty = buildingPart.getBoundedBySurface();
		}
		if((solidProperty.getParent()) instanceof Building){
			Building building = (Building)solidProperty.getParent();
			listSurfaceProperty = building.getBoundedBySurface();
		}
		for(BoundarySurfaceProperty boundarySurfaceProperty : listSurfaceProperty){
			AbstractBoundarySurface abstractBoundarySurface = boundarySurfaceProperty.getObject();
			MultiSurfaceProperty multiSurfaceProperty = null;
			if ( lod == 2){
				 multiSurfaceProperty = abstractBoundarySurface.getLod2MultiSurface();
			}
			if ( lod == 3){
				 multiSurfaceProperty = abstractBoundarySurface.getLod3MultiSurface();
			}
			if ( lod == 4){
				 multiSurfaceProperty = abstractBoundarySurface.getLod4MultiSurface();
			}
			MultiSurface multiSurface = multiSurfaceProperty.getMultiSurface();
			List<SurfaceProperty> surfaceMember = multiSurface.getSurfaceMember();
			for (SurfaceProperty surfaceMemberElement : surfaceMember){
				Polygon polygon = (Polygon)surfaceMemberElement.getSurface();
				if((polygon.getId()).equals(polygonId)){
					this.polygon = polygon;
				}
			}
		}
	}