
 
        Returns the type corresponding to a type element
 and actual type arguments, given a
 
containing type
 of which it is a member.
 The parameterized type 
Outer<String>.Inner<Number>,
 for example, may be constructed by first using
 
Types.getDeclaredType(TypeElement, TypeMirror...)
 to get the type 
Outer<String>, and then invoking
 this method.
 
 If the containing type is a parameterized type,
 the number of type arguments must equal the
 number of typeElem's formal type parameters.
 If it is not parameterized or if it is null, this method is
 equivalent to getDeclaredType(typeElem, typeArgs).
        
        
Returns:
    the type corresponding to the type element and
		actual type arguments, contained within the given type 
Parameters:
 - containing - the containing type, or {@code null} if none
 - typeElem - the type element
 - typeArgs - the actual type arguments
Throws:
  - IllegalArgumentException - if too many or too few
		type arguments are given, or if an inappropriate type
		argument, type element, or containing type is provided