def copy(to_copy, to_location, options = {})
      deep_copy = options.key?(:deep_copy) ? options[:deep_copy] : true
      overwrite = options[:overwrite] || false

      if @_componentable_container.key?(to_location) && !overwrite
        # The copy location already exists and override was not specified
        fail Origen::Componentable::NameInUseError, "#{_singleton_name} name :#{to_location} is already in use"
      end

      unless @_componentable_container.key?(to_copy)
        # The to copy name doesn't exist
        fail Origen::Componentable::NameDoesNotExistError, "#{_singleton_name} name :#{to_copy} does not exist"
      end

      if deep_copy
        @_componentable_container[to_location] = @_componentable_container[to_copy].clone
      else
        @_componentable_container[to_location] = @_componentable_container[to_copy]
      end
    end
def copy(to_copy, to_location, options = {})
      deep_copy = options.key?(:deep_copy) ? options[:deep_copy] : true
      overwrite = options[:overwrite] || false

      if @_componentable_container.key?(to_location) && !overwrite
        # The copy location already exists and override was not specified
        fail Origen::Componentable::NameInUseError, "#{_singleton_name} name :#{to_location} is already in use"
      end

      unless @_componentable_container.key?(to_copy)
        # The to copy name doesn't exist
        fail Origen::Componentable::NameDoesNotExistError, "#{_singleton_name} name :#{to_copy} does not exist"
      end

      if deep_copy
        @_componentable_container[to_location] = @_componentable_container[to_copy].clone
      else
        @_componentable_container[to_location] = @_componentable_container[to_copy]
      end
    end
Copies the component at :to_copy to :to_location. Default is to deep copy (i.e. clone)
 the to_copy, resulting in two independent components.
 @param to_copy [Symbol] Name of the component to copy.
 @param to_location [Symbol] Name to copy to.
 @param options [Hash] Customization options.
 @option options [true, false] :deep_copy (true) Indicates whether to deep copy (clone) the component or just copy the a reference to the component.
 @option options [true, false] :override (false) Indicates if the object at :to_location should be overridden if it already exists.
 @returns [Symbol] The new object (or reference to) at :to_location.
 @raise [Origen::Componentable::NameInUseError] Raised if :to_location is already in use and the :override option is not specified.
 @raise [Origen::Componentable::NameDoesNotExistsError] Raised if :to_copy name does not exists.