<commit_before>What does it get me?
--------------------
LWJGL 3 has a nice stack allocation API. Autostack builds on top of this and provides automatic stack frame allocation/deallocation in methods that make use of LWJGL 3's MemoryStack class.
This means, with Autostack you:
- do not have to MemoryStack.stackPush() at the beginning of the method
- do not have to MemoryStack.pop() at the end of the method (including before any intermittent returns)
- do not have to take care of exception handling with probably a try-finally wrapping the whole method to ensure MemoryStack.pop() gets called eventually
- do not need to care about the optimal uses of MemoryStack.push() and MemoryStack.pop()
- do not need to care about performance issues when performing repeated thread-local lookups on the MemoryStack.stackGet()

For an example see the Vulkan [ClearScreenDemoUseNewStack](https://github.com/LWJGLX/autostack/blob/master/test/org/lwjglx/autostack/demo/ClearScreenDemoUseNewStack.java).

How to use it?
--------------
Start the JVM with the VM argument:
<commit_msg>Update README with code example<commit_after>What does it get me?
--------------------
LWJGL 3 has a nice stack allocation API. Autostack builds on top of this and provides automatic stack frame allocation/deallocation in methods that make use of LWJGL 3's MemoryStack class.
This means, with Autostack you:
- do not have to MemoryStack.stackPush() at the beginning of the method
- do not have to MemoryStack.pop() at the end of the method (including before any intermittent returns)
- do not have to take care of exception handling with probably a try-finally wrapping the whole method to ensure MemoryStack.pop() gets called eventually
- do not need to care about the optimal uses of MemoryStack.push() and MemoryStack.pop()
- do not need to care about performance issues when performing repeated thread-local lookups on the MemoryStack.stackGet()

Autostack will automatically convert this code:
```Java
public static void someMethod() {
  IntBuffer someInts = stackMallocInt(16);
  PointerBuffer somePtrs = stackMallocPointer(32);
  SomeStruct someStruct = SomeStruct.callocStack();
}
```

into the equivalent of this:
```Java
public static void someMethod() {
  try (MemoryStack frame = MemoryStack.stackPush()) {
    IntBuffer someInts = frame.mallocInt(16);
    PointerBuffer somePtrs = frame.mallocPointer(32);
    SomeStruct someStruct = SomeStruct.callocStack(frame);
  }
}
```

How to use it?
--------------
Start the JVM with the VM argument:

{'fraction_non_alphanumeric': 0.0886426592797784, 'fraction_numerical': 0.004748713889988128, 'mean_word_length': 4.14867617107943, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7671047', 'n_tokens_mistral': 680, 'n_tokens_neox': 651, 'n_words': 314}