Create a new pointer which is not initialized yet and can be initialized later
Create a new mutable pointer which is not initialized yet and can be initialized later
Create a new mutable pointer pointing to the given value
Create a new pointer pointing to the given value
Create a new pointer which performs the given task on access and returns the result of the task