I don't understand why the last row of this code return a empty string.

```
Map<String, JsonObjectBuilder> HASH_MAP = new HashMap<>();

JsonObjectBuilder one = Json.createObjectBuilder();
one.add("test1","test1");
HASH_MAP.put("one", one);

JsonObjectBuilder two = Json.createObjectBuilder();
two.add("test2","test2");
HASH_MAP.put("two", two);

JsonObjectBuilder toReturn = Json.createObjectBuilder();
JsonArrayBuilder l1 = Json.createArrayBuilder();
for (Map.Entry<String, JsonObjectBuilder> l : HASH_MAP.entrySet()) {
    l1.add(l.getValue());
}

toReturn.add("l1", l1);
toReturn.add("otherParam", "value2");
String strJSON = toReturn.build().toString();
System.out.println("JSON1: " + strJSON);
System.out.println("JSON2: " + HASH_MAP.get("one").build().toString());

```

This is the output:

```
Info:   JSON1: {"l1":[{"test1":"test1"},{"test2":"test2"}],"otherParam":"value2"}
Info:   JSON2: {}

```

I am espetting that the second JSON is `{"test1":"test1"}`. I am wrong?  

The problem seems to be link with the `.build()` function that sets all the *valueMap* of elements added to the `HASH_MAP` to null (see the image).
[![enter image description here](https://i.stack.imgur.com/hUT8s.png)](https://i.stack.imgur.com/hUT8s.png)

How can I leave the value inside the `HASH_MAP` untouched?