public void push(T value) {

    StackNode<T> stackNode = new StackNode<T>(value);

    if (topNode == null) {
      topNode = stackNode;
    } else {
      stackNode.setLastNode(topNode);
      topNode.setNextNode(stackNode);
      topNode = stackNode;
    }
  }
  public T pop() {

    if (topNode != null) {

      StackNode newTopNode = topNode.getLastNode();
      T topNodeValue = topNode.getValue();

      newTopNode.setNextNode(null);
      topNode.setLastNode(null);

      topNode = newTopNode;

      return topNodeValue;
    }

    return null;
  }