private function groupByJoinpoints(IMap $advicesJoinpoints)
 {
     $groupedByJoinpoints = new Map();
     foreach ($advicesJoinpoints->getKeys() as $advice) {
         list($joinpoints, $aspectDefinition) = $advicesJoinpoints->getValue($advice);
         foreach ($joinpoints as $joinpoint) {
             if (!$groupedByJoinpoints->exists($joinpoint)) {
                 $groupedByJoinpoints->put($joinpoint, new ArrayList());
             }
             /** @var ArrayList $advices */
             $advices = $groupedByJoinpoints->getValue($joinpoint);
             $advices->put([$advice, $aspectDefinition]);
         }
     }
     return $groupedByJoinpoints;
 }