diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 0000000000..d4159e07cc
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,7 @@
+
+
+
+ true
+
+
+
diff --git a/Jint.Tests/Runtime/InteropTests.cs b/Jint.Tests/Runtime/InteropTests.cs
index e054e0bf42..a62b514872 100644
--- a/Jint.Tests/Runtime/InteropTests.cs
+++ b/Jint.Tests/Runtime/InteropTests.cs
@@ -3333,5 +3333,93 @@ public void CanDestructureInteropTargetMethod()
var result = engine.Evaluate("const { getStrings } = test; getStrings().Count;");
Assert.Equal(3, result);
}
+
+ private class MetadataWrapper : IDictionary
+ {
+ public IEnumerator> GetEnumerator() => throw new NotImplementedException();
+ IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
+ public void Add(KeyValuePair item) => throw new NotImplementedException();
+ public void Clear() => throw new NotImplementedException();
+ public bool Contains(KeyValuePair item) => throw new NotImplementedException();
+ public void CopyTo(KeyValuePair[] array, int arrayIndex) => throw new NotImplementedException();
+ public bool Remove(KeyValuePair item) => throw new NotImplementedException();
+ public int Count { get; set; }
+ public bool IsReadOnly { get; set; }
+ public bool ContainsKey(string key) => throw new NotImplementedException();
+ public void Add(string key, object value) => throw new NotImplementedException();
+ public bool Remove(string key) => throw new NotImplementedException();
+ public bool TryGetValue(string key, out object value)
+ {
+ value = "from-wrapper";
+ return true;
+ }
+
+ public object this[string key]
+ {
+ get => "from-wrapper";
+ set
+ {
+ }
+ }
+
+ public ICollection Keys { get; set; }
+ public ICollection