The Gift

In the town of Brixton, Georgia, widow Annie Wilson is the resident fortune-teller who possesses extrasensory perception. Jessica King (Holmes), the fiancÃ©e of local school principal Wayne Collins (Kinnear) disappears.
Annie eventually receives a vision revealing that Jessica has been killed and her corpse thrown into a pond. She informs local sheriff Pearl Johnson (J.K. Simmons) of her vision and with this information, and despite his skepticism, Johnson searches a pond at the estate of Donnie Barksdale (Reeves), the violent husband of one of Annie's clients named Valerie (Swank). He had previously threatened Annie and her kids for Annie advising his wife to leave him. Valerie permits the search while Donnie is absent from their residence, but the latter returns while the search is proceeding. The police find Jessica's corpse in the pond and Donnie is arrested for her murder.
During his trial for Jessica's murder, it is revealed that Jessica and Barksdale had an affair. The case against Barksdale is strengthened when evidence supporting that Barksdale is the murderer is discovered; Annie also takes the stand and Donnie is eventually convicted and sent to prison.
Buddy Cole (Ribisi), an acquaintance of Annie's, harbors a hatred for his father. The former tries to explain to Annie why he hates his father but Annie is preoccupied and refuses to listen to the explanation of the vulgar, agitated Buddy. That evening, Buddy's mother calls Annie to come to their house as Buddy has snapped and has his father bound to a chair. Buddy sets his father on fire and it is then revealed that Buddy's father sexually abused him as a child. Buddy is eventually taken to a mental hospital.
Later, Annie receives another vision divulging that Donnie is innocent. She asks prosecutor David Duncan (Gary Cole) to reopen the case. After Duncan declines, Annie counters that if he does not do so she will reveal Duncan and Jessica's sexual activity which she witnessed. Duncan attempts to bribe Annie in exchange for her silence, but Annie refuses, only wanting justice for Barksdale.
Annie tells Collins that Barksdale is not responsible for Jessica's death and that Duncan will not reopen the investigation. At Collins suggestion he and Annie drive out to the pond that night where Annie learns from a vision that Collins is actually Jessica's murderer. Collins confesses to Annie that he was angry after he discovered that she was cheating on him. Collins attempts to kill Annie - striking her in the head with a flashlight - knowing that she will inform the police about killing his fiancÃ©e, but Buddy appears and knocks him out. Annie and Buddy lock the unconscious Collins in the trunk of Annie's car.
To stop her head wound from bleeding, Buddy returns to Annie a handkerchief that she had lent him earlier. The two drive to the police station with Collins stowed in the trunk. Annie tells Buddy that he will have to return to the mental hospital and he waits in the car while she enters the station to talk with Sheriff Johnson. When she returns to the car with the police to retrieve Collins from the trunk, Buddy has disappeared. When Annie explains to Johnson what happened at the pond, he informs her that Buddy could not have aided her at as he had committed suicide at the mental hospital earlier that day. However, Annie still has the handkerchief that Buddy returned to her.

Question: Who knocks Collins out?
Answer: Buddy