If we remove `lazy`, it is dangerous for end-user to call this method more than once. Should we add a warning in the comment?