You're looking through the wrong end of the telescope.
Managed properties are properties which are managed by virtue of having been specified in the faces-config file. The faces
servlet compiles faces-config and injects these values into the managed beans.
What that means is that you don't go to the FacesContext and retrieve properties. Instead you define your own beans and
JSF injects the data values into them using standard javabean setter techniques.
FacesContext doesn't even have a place to hold properties. When you define a managed bean with session scope in a webapp, as an example, JSF constructs the managed bean, injects the managed properties, and stores the bean in the Http Session using the same mechanism as if you wrote a servlet that created a javabean, initialized it and saved it in the Http Session.
In other words, the real magic of JSF is that there really isn't any magic.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.