1. A computerized apparatus for detecting an optimization opportunity in a concurrent computer program, the computerized apparatus having a processor, the computerized apparatus comprising: a trace analyzer configured to analyze a trace of an execution of the concurrent computer program to determine the optimization opportunity, said trace analyzer comprising: a critical section identifier configured to identify an execution of a critical section of the concurrent computer program; a data access identifier configured to identify an access to a data object during the execution of the critical section and a thread identifier of a thread performing the data access; a temporally-adjacent accesses identifier configured to determine whether two data accesses are temporally-adjacent to each other, wherein the temporally-adjacent accesses are performed in between a data access associated with locking the critical section and a data access associated with unlocking the critical section; a relation determination module configured to determine a relation between a first data object and a second data object based on temporally-adjacent accesses identified by said data access identifier and said temporally-adjacent accesses identifier, wherein said relation determination module comprises a Temporal Relation Graph module for maintaining an extended Temporal Relation Graph; and wherein the Temporal Relation Graph module is responsive to an identification of the access identified by said data access identifier and a determination by said temporally-adjacent accesses identifier, wherein at least one first node in the extended Temporal Relation Graph represents a data object, and at least one second node in the extended Temporal Relation Graph represents a critical section.