public Object clone() throws CloneNotSupportedException
    {
        Feature result = (Feature)super.clone();
      if(result.lookAt!=null)
      {
        result.lookAt = (LookAt)this.lookAt.clone();
        result.lookAt.setParent(result);
      }
      if(result.timePrimitive!=null)
      {
        result.timePrimitive = (TimePrimitive)this.timePrimitive.clone();
        result.timePrimitive.setParent(result);
      }
      if(result.styleSelector!=null)
      {
        result.styleSelector = new ArrayList();
        for (Iterator iter = this.styleSelector.iterator(); iter.hasNext();)
        {
            StyleSelector element = (StyleSelector)iter.next();
            StyleSelector elementClone = (StyleSelector)element.clone();
            elementClone.setParent(result);
        result.styleSelector.add(elementClone);
        }
      }
      if(result.region!=null)
      {
        result.region = (Region)this.region.clone();
        result.region.setParent(result);
      }
      if(result.metadata!=null)
      {
        result.metadata = (Metadata)this.metadata.clone();
        result.metadata.setParent(result);
      }
        return result;
    }