Depending on if child is NULL, either wraps child inside of a maybe container or creates a Nothing instance for the given type.
At least one of child_type and child must be non-NULL. If child_type is non-NULL then it must be a definite type. If they are both non-NULL then child_type must be the type of child.
If child is a floating reference (see Variant.refSink), the new instance takes ownership of child.