question: public void add ( SimpleName ref ) { String typeName = ref . getIdentifier ( ) ; if ( fImportsAdded . contains ( typeName ) ) { return ; } IBinding binding = ref . resolveBinding ( ) ; if ( binding != null ) { if ( binding . getKind ( ) != IBinding . TYPE ) { return ; } ITypeBinding typeBinding = ( ITypeBinding ) binding ; if ( typeBinding . isArray ( ) ) { typeBinding = typeBinding . getElementType ( ) ; } typeBinding = typeBinding . getTypeDeclaration ( ) ; if ( ! typeBinding . isRecovered ( ) ) { if ( needsImport ( typeBinding , ref ) ) { fImpStructure . addImport ( typeBinding ) ; fImportsAdded . add ( typeName ) ; } return ; } } else { if ( fDoIgnoreLowerCaseNames && typeName . length ( ) > 0 ) { char ch = typeName . charAt ( 0 ) ; if ( Strings . isLowerCase ( ch ) && Character . isLetter ( ch ) ) { return ; } } } fImportsAdded . add ( typeName ) ; fUnresolvedTypes . put ( typeName , new UnresolvedTypeData ( ref ) ) ; }
target:  Tries to find the given type name and add it to the import structure.