Because http://www.creationkit.com/Actor_Script extends http://www.creationkit.com/ObjectReference_Script, they're sort of ObjectReferences as well. This isn't technically true, as they don't have the ObjectReference type, but because they can be auto-casted to it they can be treated as though they did.
If a function returns a reference that is
always an Actor, then its return type will be Actor. If its return type is a reference that
may be an Actor, then its return type will be ObjectReference. In this case, you can detect whether the returned object is an Actor by trying to cast it to type Actor:
RetVal as Actor
If the returned object
is an Actor, then the result of this cast will be an object of type Actor. If the returned object is
not an Actor, then the result of the cast will be None.
When an object is of type Actor instead of type ObjectReference, it has access to the functions of the http://www.creationkit.com/Actor_Script. Even if it can be cast to Actor, if its type is ObjectReference then the compiler will give an error if you try to call any of these functions on it.
Cipscis