A computer-implemented method for instantiating an object graph representing an instance of a particular type that has structured permissions, the method comprising: an act of generating a type definition by a type definition component, the type definition including a structured permission; accessing the type definition by a type definition access component; generating, by an instantiation component, the object graph including at least one root object and one further object according to the particular type using the type definition accessed by the type definition access component; an act of segmenting, by the type definition component, the type structure into permission partitions, including at least a first permission partition and a second permission partition, wherein the first permission partition is a root permission partition comprising the root object, and the second permission partition is an inner permission partition comprising the further object; an act of assigning, by the instantiation component, a first permission to the first permission partition of the object graph so that the first permission is enforced on access requests for objects within the first permission partition; and an act of assigning, by the instantiation component, a second permission to the second permission partition of the object graph so that the second permission is enforced on access requests for objects within the second permission partition, wherein the second permission may be different than the first permission; the first and second permissions including at least one of a readable permission (211 A), a writable permission (211 B), and immutable permission (211 C), a fresh permission (211 D) signifying that no external references to a particular object graph or any object within the object graph are referenced by a returned reference and signifying that there are no mutable references within the object graph to any object outside of the object graph, and a shallow fresh permission (211 E) denoting that the root permission partition only has no external references, the shallow fresh permission being applicable to the root permission partition when there are no external references to the root permission partition referenced by a return reference and there are no mutable references within the root permission partition to any objects outside of the root permission partition; wherein the first permission is an immutable permission. an act of generating a type definition by a type definition component, the type definition including a structured permission; accessing the type definition by a type definition access component; generating, by an instantiation component, the object graph including at least one root object and one further object according to the particular type using the type definition accessed by the type definition access component; an act of segmenting, by the type definition component, the type structure into permission partitions, including at least a first permission partition and a second permission partition, wherein the first permission partition is a root permission partition comprising the root object, and the second permission partition is an inner permission partition comprising the further object; an act of assigning, by the instantiation component, a first permission to the first permission partition of the object graph so that the first permission is enforced on access requests for objects within the first permission partition; and an act of assigning, by the instantiation component, a second permission to the second permission partition of the object graph so that the second permission is enforced on access requests for objects within the second permission partition, wherein the second permission may be different than the first permission; the first and second permissions including at least one of a readable permission (211 A), a writable permission (211 B), and immutable permission (211 C), a fresh permission (211 D) signifying that no external references to a particular object graph or any object within the object graph are referenced by a returned reference and signifying that there are no mutable references within the object graph to any object outside of the object graph, and a shallow fresh permission (211 E) denoting that the root permission partition only has no external references, the shallow fresh permission being applicable to the root permission partition when there are no external references to the root permission partition referenced by a return reference and there are no mutable references within the root permission partition to any objects outside of the root permission partition; wherein the first permission is an immutable permission.