code: public List<JAXBElement<? extends AbstractSurfaceType>> get_Surface() {
          if (_Surface == null) {
              _Surface = new ArrayList<JAXBElement<? extends AbstractSurfaceType>>();
          }
          return this._Surface;
      }
docs: Gets the value of the surface property.
  
  <p>
  This accessor method returns a reference to the live list,
  not a snapshot. Therefore any modification you make to the
  returned list will be present inside the JAXB object.
  This is why there is not a <CODE>set</CODE> method for the surface property.
  
  <p>
  For example, to add a new item, do as follows:
  <pre>
  get_Surface().add(newItem);
  </pre>
  
  
  <p>
  Objects of the following type(s) are allowed in the list
  {@link JAXBElement }{@code <}{@link TinType }{@code >}
  {@link JAXBElement }{@code <}{@link TriangulatedSurfaceType }{@code >}
  {@link JAXBElement }{@code <}{@link PolyhedralSurfaceType }{@code >}
  {@link JAXBElement }{@code <}{@link SurfaceType }{@code >}
  {@link JAXBElement }{@code <}{@link net.opengis.citygml.texturedsurface._1.TexturedSurfaceType }{@code >}
  {@link JAXBElement }{@code <}{@link net.opengis.citygml.texturedsurface._2.TexturedSurfaceType }{@code >}
  {@link JAXBElement }{@code <}{@link OrientableSurfaceType }{@code >}
  {@link JAXBElement }{@code <}{@link CompositeSurfaceType }{@code >}
  {@link JAXBElement }{@code <}{@link PolygonType }{@code >}
  {@link JAXBElement }{@code <}{@link AbstractSurfaceType }{@code >}