Extents are double linked lists. They could be used for any type of java classes. But, in GroIMP they are only created for Nodes in the graph. Thus, the elements of the extents will be referred as Node (and their subclasses).
To be part of the project graph an object needs to extends Node. Thus, the highest level of Extent is the one wrapping the type Node.
Then, for each new type of Node added in the graph, an extent is created and linked to its direct super class. The type of Node is described by its NType. The NType is an internal class defined by each Node. In java it is usually created with the code enhancer to ensure that all the required attributes for the persistence management are created. In RGG, the NType is automatically created for all modules.
If a Node is added to the graph and it extends several level of Nodes, an extent for each intermediate NTypes is created.
Extent implements the following methods:
E.g. in the following: (the init method is simplified, and we assume that there are not other nodes in the graph)
module A; module B extends A; module C extends B; init()[ Axiom ==> C; ]
the graph only contains the root: Node, the RGGRoot, and one C node. GroIMP will create the following extents: