I have managed to solve the task by checking the other users their help questions here. However, i am still stuck on why the code needs to be changed to User and it can't be a reference to the User object through the DBObject interface.
interface DBObject {
    DBObject initializeIdAndName(long id, String name);

static class User implements DBObject {
    long id;
    String name;

    public User initializeIdAndName(long id, String name) {
        this.id = id;
        this.name = name;
        return this;
As learned on a previous section here: https://codegym.cc/groups/posts/101-why-interfaces-are-necessary-in-java It tells me i can create object references by using the interface class. It would help me a lot if someone can explain me in detail why here it cant be a reference to a User object by returning a DBObject reference to that User object (as Java will know it will be a user object, simply because we are returning this.) I do know that an interface class can't be instantiated, but then again, every object creation is merely a reference to that specific object. This part realllllyy confuses me, and if someone could explain me this or send me a link to clear this up it would be highly appreciated!