Nashorn hitting some sort of limit with binding values

My code loads a Nashorn Script Engine binding values representing metadata fields and allows user to write Javascript to modify those metadata fields by passing the script to the eval method and then checking for modified metadata values. It was working fine but as I have increased the number of values added to the bindings I have unexpected issues that some binding variables values are missing or changed despite the script not modifying these values.

Screenshot to give some context

enter image description here

I am now able to mimic the problem with self contained example

import javax.script.ScriptContext;
import javax.script.ScriptEngine;

public class JsTest
{
     public static void main(String[] args) throws Exception
     {
         int numberOfBindingVars = Integer.parseInt(args[0]);
         ScriptEngine engine;
         for(int i=0; i<10; i++)
         {
             engine = new org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory().getScriptEngine();
             for(int k=0;k<numberOfBindingVars;k++)
             {
                 engine.put("var"+k,"1963");
             }

             System.out.println(String.format("Bindings %d", engine.getBindings(ScriptContext.ENGINE_SCOPE).size()));
             for(int k=0;k<numberOfBindingVars;k++)
             {
                 if(engine.get("var"+k)==null)
                 {
                     System.out.println("Missing var"+k);
                 }
             }
         }
     }
}

Running this with paramter 400 works fine and gives me

Bindings 400
Bindings 400
Bindings 400
Bindings 400
Bindings 400
Bindings 400
Bindings 400
Bindings 400
Bindings 400
Bindings 400

But if I increase parameter to 500 the binding count is inconsistent , although wierdly checking for each value doesnt reveal any missing.

Bindings 500
Bindings 499
Bindings 498
Bindings 497
Bindings 496
Bindings 495
Bindings 494
Bindings 500
Bindings 499
Bindings 498

And if run with 1000 I get inconsistent count again, also unable to find certain vars around the 500 mark

Bindings 1000
Bindings 999
Missing var448
Bindings 1000
Bindings 999
Missing var448
Bindings 998
Missing var448
Missing var449
Bindings 997
Missing var448
Missing var449
Missing var450
Bindings 996
Missing var448
Missing var449
Missing var450
Missing var451
Bindings 995
Missing var448
Missing var449
Missing var450
Missing var451
Missing var452
Bindings 994
Missing var448
Missing var449
Missing var450
Missing var451
Missing var452
Missing var453
Bindings 993
Missing var448
Missing var449
Missing var450
Missing var451
Missing var452
Missing var453
Missing var454

In all cases works okay the first time, but with the 500 and 1000 calls thesubsequent iterations are incorrect.

Seems like there is some other Nashorn process trimming the size of the bindngs, this must be a bug surely?

Would love some input with deeper knowledge of nashorn