/*!
* @class Pair
*
* @implements ComparableConcept
*
* @headerfile <seqan/basic.h>
*
* @brief Store two arbitrary objects.
*
* @signature template <typename T1, typename T2, typename TSpec> class Pair;
*
* @tparam T1 The type of the first member.
* @tparam T2 The type of the second member.
* @tparam TSpec Tag used for the specialization.
*
* @mfn Pair#LENGTH
*
* @brief Return number of members in a Pair (2).
*
* @signature LENGTH<TPair>::VALUE;
*
* @tparam TPair The Pair specialization.
*
* @return VALUE The number of element in a Pair (2).
*
* @mfn Pair#Value
*
* @brief Return type of the i-th value.
*
* @signature Value<TTuple, I>::Type;
*
* @tparam TTuple Tuple specialization to get the type of.
* @tparam I The index of the member to get (1 or 2).
*
* @return Type Result type.
*
* @mfn Pair#Spec
*
* @brief Return specialization tag.
*
* @signature Spec<TPair>::Type;
*
* @tparam TPair The Pair specialization.
*
* @return Type The resulting type.
*
* @var T1 Pair::i1;
*
* @brief First member
*
* @var T2 Pair::i2;
*
* @brief Second member
*
* @fn Pair#Pair
*
* @brief Default and copy construction and construction for two values.
*
* @signature Pair::Pair();
* @signature Pair::Pair(other);
* @signature Pair::Pair(x1, x2);
*
* @param[in] other The other Pair object to copy from.
* @param[in] x1 Copied to first member.
* @param[in] x2 Copied to second member
*
* @fn Pair#getValueI1
*
* @brief The get-value of the Pair's first entry.
*
* @signature T1 getValueI1(pair);
*
* @param[in] pair The pair to get entry from.
*
* @return T1 The first entry of the Pair.
*
* @fn Pair#getValueI2
*
* @brief The get-value of the Pair's second entry.
*
* @signature T2 getValueI2(pair);
*
* @param[in] pair The pair to get entry from.
*
* @return T2 The second entry of the Pair.
*
* @fn Pair#assignValueI1
*
* @brief Set first entry of a pair.
*
* @signature void assignValueI1(pair, val);
*
* @param[in] pair The pair to get entry from.
* @param[in] val Set the value of the Pair's first entry.
*
* @fn Pair#assignValueI2
*
* @brief Set second entry of a pair.
*
* @signature void assignValueI2(pair, val);
*
* @param[in] pair The pair to get entry from.
* @param[in] val Set the value of the Pair's second entry.
*
* @fn Pair#setValueI1
*
* @brief Set first entry of a pair.
*
* @signature void setValueI1(pair, val);
*
* @param[in] pair The pair to get entry from.
* @param[in] val Set the value of the Pair's first entry.
*
* @fn Pair#setValueI2
*
* @brief Set second entry of a pair.
*
* @signature void setValueI2(pair, val);
*
* @param[in] pair The pair to get entry from.
* @param[in] val Set the value of the Pair's second entry.
*/