The question from the exam states:
Write a class called Registration which can store variables of type T, where T can be replaced with String,
Person, Student, etc.. It should be possible to instantiate Registration as follows:

```
Registration<String> r1 = new Registration<String>();
Registration<Person> r2 = new Registration<Student>();

```

I am unable to figure out how to write the declaration for the generics part of the class header. Below I have given the Registration class. To note, the class Student inherits the Person class. 

```
import java.util.List;
import java.util.ArrayList;
public class Registration<T extends Person> //I believe my issue is here{
private T [] roster;
private List<T> waitList;
private static int rosterCount;
private T lastInstance;

public Registration () {
    roster =  (T[]) new Object[100];
    waitList = new ArrayList<>();
    rosterCount = 0;
    lastInstance = null;
}

public void addIndex (T t) {
    if (rosterCount>=100) {
        waitList.add(t);
    }
    else {
        roster [rosterCount] = t;
        rosterCount++;
    }
    lastInstance = t;
}

public T getLastInstance() {
    return lastInstance;
}

public int getRosterCount() {
    return rosterCount;
}

public int getWaitListCount() {
    return waitList.size();
}
}

```

\*\*Taken from Uoft CSC207 Aug2017 Exam