/// <summary>
 /// Resolves the supplied <paramref name="alias"/> to a <see cref="System.Type"/>.
 /// </summary>
 /// <param name="alias">
 /// The alias to resolve.
 /// </param>
 /// <returns>
 /// The <see cref="System.Type"/> the supplied <paramref name="alias"/> was
 /// associated with, or <see lang="null"/> if no <see cref="System.Type"/>
 /// was previously registered for the supplied <paramref name="alias"/>.
 /// </returns>
 /// <exception cref="System.ArgumentNullException">
 /// If the supplied <paramref name="alias"/> is <see langword="null"/> or
 /// contains only whitespace character(s).
 /// </exception>
 public static Type ResolveType(string alias)
 {
     AssertUtils.ArgumentHasText(alias, "alias");
     return(( Type )types[alias]);
 }
 /// <summary>
 /// Returns the element at the specified index using the supplied
 /// <paramref name="enumerable"/>.
 /// </summary>
 /// <param name="enumerable">
 /// The <see cref="System.Collections.IEnumerable"/> to use to enumerate
 /// elements until the supplied <paramref name="index"/> is reached.
 /// </param>
 /// <param name="index">
 /// The index of the element in the enumeration to return.
 /// </param>
 /// <returns>
 /// The element at the specified index using the supplied
 /// <paramref name="enumerable"/>.
 /// </returns>
 /// <exception cref="System.ArgumentOutOfRangeException">
 /// If the supplied <paramref name="index"/> was less than zero, or the
 /// supplied <paramref name="enumerable"/> did not contain enough elements
 /// to be able to reach the supplied <paramref name="index"/>.
 /// </exception>
 /// <exception cref="System.ArgumentNullException">
 /// If the supplied <paramref name="enumerable"/> is <see langword="null"/>.
 /// </exception>
 public static object EnumerateElementAtIndex(IEnumerable enumerable, int index)
 {
     AssertUtils.ArgumentNotNull(enumerable, "enumerable");
     return(ObjectUtils.EnumerateElementAtIndex(enumerable.GetEnumerator( ), index));
 }
 /// <summary>
 /// Creates a new instance of the class.
 /// </summary>
 /// <param name="typeResolver">
 /// this instance will delegate
 /// actual <see cref="System.Type"/> resolution to if a <see cref="System.Type"/>
 /// cannot be found in this instance's <see cref="System.Type"/> cache.
 /// </param>
 /// <exception cref="System.ArgumentNullException">
 /// If the supplied <paramref name="typeResolver"/> is <see langword="null"/>.
 /// </exception>
 public CachedTypeResolver(ITypeResolver typeResolver)
 {
     AssertUtils.ArgumentNotNull(typeResolver, "typeResolver");
     this.typeResolver = typeResolver;
 }