Question 2: Abstracting a class graph from a constructor class. Consider the constructor calls below. Write one class dictionary that could have been used to define the classes involved in the constructor calls. You will have to invent certain names. Names you invent (as opposed to the ones that are given by the constructor calls below) should terminate with _. Vertex adj1_vertex = new Vertex(new Ident("Cd_graph")); Vertex adj1_cls1 = new Vertex(new Ident("Adj")); Vertex adj1_cls2 = new Vertex(new Ident("Adj_list")); Nany_vertex_list adj1_nvl2 = new Nany_vertex_list(new Labeled_vertex( new Ident("rest"),adj1_cls2),new Empty()); Nany_vertex_list adj1_nvl1 = new Nany_vertex_list(new Labeled_vertex( new Ident("first"),adj1_cls1), adj1_nvl2); Neighbors adj1_neighbors = new Construct( adj1_nvl1); Adj adj1 = new Adj(adj1_vertex, adj1_neighbors); Vertex adj2_vertex = new Vertex(new Ident("Adj")); Vertex adj2_cls1 = new Vertex(new Ident("Vertex")); Vertex adj2_cls2 = new Vertex(new Ident("Neighbors")); Nany_vertex_list adj2_nvl3 = new Nany_vertex_list(new Syntax_vertex("."), new Empty()); Nany_vertex_list adj2_nvl2 = new Nany_vertex_list(new Labeled_vertex( new Ident("rest"), adj2_cls2), adj2_nvl3); Nany_vertex_list adj2_nvl1 = new Nany_vertex_list(new Labeled_vertex( new Ident("first"), adj2_cls1), adj2_nvl2); Neighbors adj2_neighbors = new Construct( adj2_nvl1); Adj adj2 = new Adj(adj2_vertex, adj2_neighbors); Vertex adj3_vertex = new Vertex(new Ident("Neighbors")); Vertex adj3_first = new Vertex(new Ident("Construct")); Vertex adj3_second = new Vertex(new Ident("Alternat")); Neighbors adj3_neighbors = new Alternat(adj3_first, adj3_second); Adj adj3 = new Adj(adj3_vertex, adj3_neighbors); Vertex adj4_vertex = new Vertex(new Ident("Construct")); Vertex adj4_cls = new Vertex(new Ident("Any_vertex_list")); Nany_vertex_list adj4_nvl2 = new Nany_vertex_list(new Labeled_vertex( new Ident("c_ns"), adj4_cls), new Empty()); Nany_vertex_list adj4_nvl1 = new Nany_vertex_list(new Syntax_vertex("="), adj4_nvl2); Neighbors adj4_neighbors = new Construct( adj4_nvl1); Adj adj4 = new Adj(adj4_vertex, adj4_neighbors); Vertex adj5_vertex = new Vertex(new Ident("Alternat")); Vertex adj5_cls = new Vertex(new Ident("Vertex")); Nany_vertex_list adj5_nvl4 = new Nany_vertex_list(new Labeled_vertex(new Ident("second"), adj5_cls), new Empty()); Nany_vertex_list adj5_nvl3 = new Nany_vertex_list(new Syntax_vertex("|"), adj5_nvl4); Nany_vertex_list adj5_nvl2 = new Nany_vertex_list(new Labeled_vertex( new Ident("first"), adj5_cls), adj5_nvl3); Nany_vertex_list adj5_nvl1 = new Nany_vertex_list(new Syntax_vertex(":"), adj5_nvl2); Neighbors adj5_neighbors = new Construct( adj5_nvl1); Adj adj5 = new Adj(adj5_vertex, adj5_neighbors); Vertex adj6_vertex = new Vertex(new Ident("Any_vertex")); Vertex adj6_first = new Vertex(new Ident("Labeled_vertex")); Vertex adj6_second = new Vertex(new Ident("Syntax_vertex")); Neighbors adj6_neighbors = new Alternat(adj6_first, adj6_second); Adj adj6 = new Adj(adj6_vertex, adj6_neighbors); Adj_list cd_graph6 = new Cd_graph(adj6, new Empty_cd_graph()); Adj_list cd_graph5 = new Cd_graph(adj5, cd_graph6); Adj_list cd_graph4 = new Cd_graph(adj4, cd_graph5); Adj_list cd_graph3 = new Cd_graph(adj3, cd_graph4); Adj_list cd_graph2 = new Cd_graph(adj2, cd_graph3); Cd_graph cd_graph = new Cd_graph(adj1, cd_graph2);