public DeclaredType getDeclaredType(DeclaredType containing, TypeElement typeElem,
TypeMirror... typeArgs) {
int typeArgsLength = typeArgs.length;
TypeElementImpl typeElementImpl = (TypeElementImpl) typeElem;
ReferenceBinding referenceBinding = (ReferenceBinding) typeElementImpl._binding;
TypeVariableBinding[] typeVariables = referenceBinding.typeVariables();
int typeVariablesLength = typeVariables.length;
DeclaredTypeImpl declaredTypeImpl = (DeclaredTypeImpl) containing;
ReferenceBinding enclosingType = (ReferenceBinding) declaredTypeImpl._binding;
if (typeArgsLength == 0) {
if (referenceBinding.isGenericType()) {