code: def _load_geometrycollection(tokens, string):
      
      open_paren = next(tokens)
      if not open_paren == '(':
          raise ValueError(INVALID_WKT_FMT % string)
  
      geoms = []
      result = dict(type='GeometryCollection', geometries=geoms)
      while True:
          try:
              t = next(tokens)
              if t == ')':
                  break
              elif t == ',':
                  # another geometry still
                  continue
              else:
                  geom_type = t
                  load_func = _loads_registry.get(geom_type)
                  geom = load_func(tokens, string)
                  geoms.append(geom)
          except StopIteration:
              raise ValueError(INVALID_WKT_FMT % string)
      return result
docs: Has similar inputs and return value to to :func:`_load_point`, except is
      for handling GEOMETRYCOLLECTIONs.
  
      Delegates parsing to the parsers for the individual geometry types.
  
      :returns:
          A GeoJSON `dict` GeometryCollection representation of the WKT
          ``string``.