Question: I'm trying to implement a stack without using Python's in-built stack/queue methods to understand the logic. Could someone please resolve the error below and provide a working solution - i think I'm close. 

```
data = ("a","b","c","d","e","f","g")

stackArray = []
stackPointer = 0
stackMaximum = 7

#Routine to Push
if stackPointer < stackMaximum:
    stackPointer = stackPointer + 1
    stackArray[stackPointer] = data
else:
    print("Stack Full")

#Routine to pop
if stackPointer > 0:
    stackPointer = stackPointer - 1
    stackArray[stackPointer] = data
else:
    print("No data to pop off")

```

stackArray[stackPointer] = data
NameError: name 'data' is not defined

Answer: 
I'd almost think that the code were obfuscated, but then you would see it in method names as well. Sometimes obfuscators do things that aren't allowed in the language, so when you decompile them you can't recompile the source. It's only the Java syntax that doesn't allow `do` or `try` as variable names, the JVM (and other languages that run on the JVM) doen't care about it.

Either this was deliberate obfuscation or they were not compiled from Java classes.
You can't use keywords as variable names, see [chapter 3.9](https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.9) in the Java Language Specification. 

The decompiler gave you bad/buggy code.