You can clone with
HTTPS or Subversion.
Maximum call of stack reached when instantiates an Options Class with a reference in its own options .
Maybe the merge options has to check if its not an instance each of the passed options
No, you should check this yourself in your app code.