Помогите найти ошибку в списке список без import java. util

помогите найти ошибку в списке список без import java.util
Нашёл в просторах интернета интересную вещь
[JAVA]package spisok;

public class LinkList {
public static LinkList start = null;
public int value;
public LinkList node;

public Link head; // Первая запись
public Link
tail; // Последняя запись
public String name; // Имя списка

// Пустой список
public LinkList() {
this("A List");
}
//Пустой список номер 2
public LinkList(String listName) {
name = listName;
head = tail = null;
}
// Очистка списка
public void clear() {
head = tail = null;
}
// проверка пустой ли список?
public Boolean isEmpty() {
if (head == null)
return true;
return false;
}
// Вставка в начало списка
public void insertAtFront(E data) {
if (isEmpty())
head = tail = new Link<>(data);

else {
Link temp = new Link<>(data);
temp.nextLink = head;
head = temp;
}
}

//Удаление из середины
public static void removeAtMiddle(int loc) {
if(start == null){
System.out.println("Лист Пуст..! ");
} else {
LinkList tmp = start;
int count = 1;
while(count != (loc-1)){
count++;
tmp = tmp.node;
}
tmp.node = tmp.node.node;
}

}

//обращение к конкретному элементу
public E get(int index){
Link current = head;
int number = 1;
while (current != tail){
if (number == index)
return current.data;
number++;
current = current.nextLink;
}
if (number == index){
return current.data;
}
return null;
}

public void lastIndex (Object X){
int numbers = 0;
Link current = head;
while (current != tail){
numbers++;
current = current.nextLink;
}
numbers++;
X=numbers;
//System.out.print("элементов" + numbers);
}

//вывод
public void print() {
Link current = head;
if (current == null)
System.out.println("Лист пуст");
while (current != tail)
{
System.out.print(" "+current.data + " ");
current = current.nextLink;
}
System.out.print(tail.data);

}

}[/JAVA]
вместе с [JAVA]package spisok;

class Link {
public E data;
public Link
nextLink;
//Link(список) Конструктор списка
public Link(){
System.out.println("пуст");
}
public Link(E data) {
this.data = data;
this.nextLink = null;
}
public Link(E data, Link
node){
this.data = data;
this.nextLink = null;
}

}[/JAVA]
с помощью этой вещи можно сделать программу, которая бы производила соответствующие манипуляции со списком, единственная проблема в [JAVA] public static void removeAtMiddle(int loc) {
if(start == null){
System.out.println("Лист Пуст..! ");
} else {
LinkList tmp = start;
int count = 1;
while(count != (loc-1)){
count++;
tmp = tmp.node;
}
tmp.node = tmp.node.node;
}

}[/JAVA]
этот класс не подходит к данной структуре, у меня не очень с ООП и прошу помощи в том, что бы реализовать удаление из середины в соответствии с общей структурой
П. С. да знаю что это не логично, т. к. есть готовые решения просто в университете не принимают задачи с использованием библиотек.

  • а что тут "интересного"?
    именно так в более менее путёвых школах и учат. сами пишут код списка (однонаправленного и двунаправленного) , стека, очереди и прочего.

    что за глупость у тебя делает метод вот этот?
    public void lastIndex(Object X)