diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/MethodModel.java b/com.amd.aparapi/src/java/com/amd/aparapi/MethodModel.java
index b976eda8d3418a3ed7a671afb91e5678bf65b27a..fa7579cfac383664c326ee2626128eae27b81a4b 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/MethodModel.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/MethodModel.java
@@ -53,6 +53,7 @@ import com.amd.aparapi.ClassModel.ClassModelMethod;
 import com.amd.aparapi.ClassModel.ConstantPool;
 import com.amd.aparapi.ClassModel.LocalVariableInfo;
 import com.amd.aparapi.ClassModel.LocalVariableTableEntry;
+import com.amd.aparapi.ClassModel.MethodDescription;
 import com.amd.aparapi.ClassModel.AttributePool.CodeEntry;
 import com.amd.aparapi.ClassModel.ConstantPool.FieldEntry;
 import com.amd.aparapi.ClassModel.ConstantPool.MethodReferenceEntry;
@@ -1496,21 +1497,27 @@ class MethodModel{
       public static class SlotTable{
          Slot[] slots;
 
-         public SlotTable(int _numberOfSlots, int _size) {
+         StoreSpec[] argsAsStoreSlots;
+
+         public SlotTable(StoreSpec[] _argsAsStoreSlots, int _numberOfSlots, int _size) {
+            argsAsStoreSlots = _argsAsStoreSlots;
             slots = new Slot[_numberOfSlots];
             for (int i = 0; i < _numberOfSlots; i++) {
-               slots[i] = new Slot(_size);
+               slots[i] = new Slot(i < argsAsStoreSlots.length ? argsAsStoreSlots[i] : StoreSpec.NONE, _size);
             }
          }
 
          public static class Slot{
-            public Slot(int _size) {
+            public Slot(StoreSpec _defaultStoreSpec, int _size) {
+               defaultStoreSpec = _defaultStoreSpec;
                entries = new Entry[_size];
                for (int i = 0; i < _size; i++) {
                   entries[i] = new Entry(i);
                }
             }
 
+            StoreSpec defaultStoreSpec;
+
             int number;
 
             public static class Entry{
@@ -1550,10 +1557,29 @@ class MethodModel{
                entries[pc].storeSpec = _storeSpec;
 
             }
+
+            public StoreSpec getDefaultStoreSpec() {
+               return (defaultStoreSpec);
+            }
          }
 
          public String toString() {
             StringBuilder sb = new StringBuilder();
+            for (Slot slot : slots) {
+               StoreSpec storeSpec = slot.getDefaultStoreSpec();
+               if (storeSpec != StoreSpec.NONE) {
+                  sb.append("S" + storeSpec);
+               } else {
+                  sb.append("  ");
+               }
+               sb.append("|");
+            }
+            sb.append("\n");
+
+            for (Slot slot : slots) {
+               sb.append("--|");
+            }
+            sb.append("\n");
             for (int row = 0; row < slots[0].entries.length; row++) {
                for (Slot slot : slots) {
                   sb.append(slot.getEntry(row) + "|");
@@ -1576,16 +1602,29 @@ class MethodModel{
          }
       }
 
-      public FakeLocalVariableTableEntry(Map<Integer, Instruction> _pcMap, CodeEntry _codeEntry) {
-         int numberOfSlots = _codeEntry.getMaxLocals();
+      public FakeLocalVariableTableEntry(Map<Integer, Instruction> _pcMap, ClassModelMethod _method) {
+         int numberOfSlots = _method.getCodeEntry().getMaxLocals();
+
+         MethodDescription description = ClassModel.getMethodDescription(_method.getDescriptor());
+         String[] args = description.getArgs();
+         StoreSpec[] argsAsStoreSpecs = new StoreSpec[args.length];
+         for (int i = 0; i < args.length; i++) {
+            if (args[i].startsWith("[")) {
+               argsAsStoreSpecs[i] = StoreSpec.A;
+            } else {
+               argsAsStoreSpecs[i] = StoreSpec.valueOf(args[i].substring(0, 1));
+            }
+         }
+
          //  System.out.println("slots= " + numberOfSlots);
-         SlotTable slotTable = new SlotTable(numberOfSlots, _pcMap.size());
+         SlotTable slotTable = new SlotTable(argsAsStoreSpecs, numberOfSlots, _pcMap.size());
          // System.out.println(slotTable);
          for (Entry<Integer, Instruction> entry : _pcMap.entrySet()) {
             int pc = entry.getKey();
             Instruction instruction = entry.getValue();
             LoadSpec loadSpec = instruction.getByteCode().getLoad();
             StoreSpec storeSpec = instruction.getByteCode().getStore();
+
             if (loadSpec != LoadSpec.NONE) {
                slotTable.setLoad(((InstructionSet.LocalVariableTableIndexAccessor) instruction).getLocalVariableTableIndex(), pc,
                      loadSpec);
@@ -1596,9 +1635,9 @@ class MethodModel{
                      storeSpec);
             }
 
-            //  System.out.println(" Instruction " + entry.getValue());
+            System.out.println(" Instruction " + entry.getValue());
          }
-         //  System.out.println(slotTable);
+         System.out.println(slotTable);
 
       }
 
@@ -1641,12 +1680,11 @@ class MethodModel{
          } else {
             if (localVariableTableEntry == null) {
                //System.out.println("create local variable table");
-               localVariableTableEntry = new FakeLocalVariableTableEntry(pcMap, method.getCodeEntry());
+
+               localVariableTableEntry = new FakeLocalVariableTableEntry(pcMap, method);
+
                method.setLocalVariableTableEntry(localVariableTableEntry);
-               localVariableTableEntry = method.getLocalVariableTableEntry();
-               if (localVariableTableEntry == null) {
-                  System.out.println("damn!");
-               }
+
                //throw new ClassParseException(ClassParseException.TYPE.MISSINGLOCALVARIABLETABLE);
             }
             for (LocalVariableInfo localVariableInfo : localVariableTableEntry) {