def get_asset_or_tag asset_or_tag
      asset =
        case asset_or_tag
          when Collins::Asset then asset_or_tag
          when String then Collins::Asset.new(asset_or_tag)
          when Symbol then Collins::Asset.new(asset_or_tag.to_s)
        else
          error_message = "Expected Collins::Asset, String or Symbol. Got #{asset_or_tag.class}"
          raise ExpectationFailedError.new(error_message)
        end
      if asset.nil? || asset.tag.nil? then
        raise ExpectationFailedError.new("Empty asset tag, but a tag is required")
      end
      asset
    end
def get_asset_or_tag asset_or_tag
      asset =
        case asset_or_tag
          when Collins::Asset then asset_or_tag
          when String then Collins::Asset.new(asset_or_tag)
          when Symbol then Collins::Asset.new(asset_or_tag.to_s)
        else
          error_message = "Expected Collins::Asset, String or Symbol. Got #{asset_or_tag.class}"
          raise ExpectationFailedError.new(error_message)
        end
      if asset.nil? || asset.tag.nil? then
        raise ExpectationFailedError.new("Empty asset tag, but a tag is required")
      end
      asset
    end
Resolve an asset from a string tag or collins asset
 @note This is perhaps the only collins specific method in Util
 @param [Collins::Asset,String,Symbol] asset_or_tag
 @return [Collins::Asset] a collins asset
 @raise [ExpectationFailedError] if asset\_or\_tag isn't valid