public LocalThreadReferenceHolder(JniEnvironment nativeEnvironment, jthread reference)
        {
            Contract.Requires <ArgumentNullException>(nativeEnvironment != null, "nativeEnvironment");

            _nativeEnvironment = nativeEnvironment;
            _reference         = (jthread)_nativeEnvironment.NewLocalReference(reference);
        }
        public LocalClassReferenceHolder(JniEnvironment nativeEnvironment, jclass reference)
        {
            Contract.Requires<ArgumentNullException>(nativeEnvironment != null, "nativeEnvironment");

            _nativeEnvironment = nativeEnvironment;
            _reference = (jclass)_nativeEnvironment.NewLocalReference(reference);
        }
        public LocalObjectReferenceHolder(JniEnvironment nativeEnvironment, jobject reference)
        {
            Contract.Requires <ArgumentNullException>(nativeEnvironment != null, "nativeEnvironment");

            _nativeEnvironment = nativeEnvironment;
            _reference         = _nativeEnvironment.NewLocalReference(reference);
        }
        public LocalObjectReferenceHolder(JniEnvironment nativeEnvironment, jobject reference)
        {
            Contract.Requires<ArgumentNullException>(nativeEnvironment != null, "nativeEnvironment");

            _nativeEnvironment = nativeEnvironment;
            _reference = _nativeEnvironment.NewLocalReference(reference);
        }