this recursion can cause infinite loop in expandable objected that reference each other.. (so we limit the levels that recursion can run)
use generic method to find/create editor , this allows object like List<T> to have their editor