Note : Please draw out the relevant points-to graphs clearly with proper explaination Q5.1 Translate the statement h.next.next.data = new Object() into normal form for pointer analysis, using additional temporary variables. Q5.2 With an allocation-site heap abstraction, what abstract locations will the variable c point to in the points-to graph? Select all that apply, and briefly explain your answer. i) n1 ii)n2 iii)o1 iv)o2 Q5.3 With an allocation-site heap abstraction, what abstract locations will the next edge from node n1 point to in the points-to graph? Select all that apply. i) n1 ii)n2 iii)o1 iv)o2 Q5.4 With an allocation-site heap abstraction, what abstract locations will the next edge from node n2 point to in the points-to graph? Select all that apply i) n1 ii)n2 iii)o1 iv)o2 Q5.5 With an allocation-site heap abstraction, what abstract locations will the variable y point to in the points-to graph? Select all that apply (no partial credit) i) n1 ii)n2 iii)o1 iv)o2 Q5.6 Say we use a typed-based heap abstraction for objects of type Node , but an allocation-site heap abstraction for objects of type Object . What abstract locations will the variable x point to in the points-to graph? Select all that apply (no partial credit) i) n1 ii)n2 iii)o1 iv)o2 16 Points Consider the following linked-list program: class Node { Object data; Node next; static void m(){ Node h= new Node ();//n1 Node c=h; while (.){. c.next = new Node( ();//n2 c=c next; } h.data = new Object ();// ol h.next.next.data = new object ();//02 Object x=h data; Object y=hnext data; } n1, , 01, and are names for the allocation sites in the program, to be used when using an allocation-site heap abstraction. Answer the following questions. TIP: for Q5.2-Q5.6, we suggest you draw out the relevant points-to graphs on a piece of paper..