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));
}

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 ) ) ; }
tries to find the given type name and add it to the import structure .
