I think lplib/lazr doing #1 for managing the cache is reasonable. I think doing it as part of the general API that developers end up hitting when writing scripts is probably not reasonable, since they aren't managing the cache. In the case of external API usage, I think #2 is more reasonable and what is expected. But given that lplib/lazr need to maintain a cache of proxy objects, they should be able to do #1 internally where needed. I just don't think that should be generally exposed through normal API usage.
I think lplib/lazr doing #1 for managing the cache is reasonable. I think doing it as part of the general API that developers end up hitting when writing scripts is probably not reasonable, since they aren't managing the cache. In the case of external API usage, I think #2 is more reasonable and what is expected. But given that lplib/lazr need to maintain a cache of proxy objects, they should be able to do #1 internally where needed. I just don't think that should be generally exposed through normal API usage.