code: func getTableObjects(tableNames []string, db *sql.DB, dbTransformer DbTransformer) (tables []*Table) {
  	// if a table has a composite pk or doesn't have pk, we can't use it yet
  	// these tables will be put into blacklist so that other struct will not
  	// reference it.
  	blackList := make(map[string]bool)
  	// process constraints information for each table, also gather blacklisted table names
  	for _, tableName := range tableNames {
  		// create a table struct
  		tb := new(Table)
  		tb.Name = tableName
  		tb.Fk = make(map[string]*ForeignKey)
  		dbTransformer.GetConstraints(db, tb, blackList)
  		tables = append(tables, tb)
  	}
  	// process columns, ignoring blacklisted tables
  	for _, tb := range tables {
  		dbTransformer.GetColumns(db, tb, blackList)
  	}
  	return
  }
docs: // getTableObjects process each table name