import java.util.LinkedList;
import java.util.List;

public class Solution {
    public static void main(String[] args) {
        List<Book> books = new LinkedList<Book>();
        books.add(new Book.MarkTwainBook("Tom Sawyer"));
        books.add(new Book.AgathaChristieBook("Hercule Poirot"));
        System.out.println(books);
    }



    abstract static class Book {
        private String author;

        public Book(String author) {
            this.author = author;
        }

        public abstract Book getBook();

        public abstract String getTitle();

        private String getOutputByBookType() {
            String agathaChristieOutput = author + ", " + getBook().getTitle() + " is a detective";
            String markTwainOutput = getBook().getTitle() + " book was written by " + author;

            String output = "output";
            if (this instanceof AgathaChristieBook) output = agathaChristieOutput;
            if (this instanceof MarkTwainBook) output = markTwainOutput;

            return output;
        }

        public String toString() {
            return getOutputByBookType();
        }
        public static class MarkTwainBook extends Book {
            String title;
            public MarkTwainBook(String title) {
                super("Mark Twain");
                this.title = title;
            }
            public MarkTwainBook getBook() { return this; }
            public String getTitle() { return title; }
        }
        public static class AgathaChristieBook extends Book{
            String title;
            public AgathaChristieBook(String title) {
                super("Agatha Christie");
                this.title = title;
            }
            public AgathaChristieBook getBook() { return this; }
            public String getTitle()
 { return title; }
        }
    }
}
ладно бы не принимал по одному-двум пунктам. так нет, ругается даже на то, что я не унаследовался от Book, как будто первая строка package com.javarush.task.task15.task1502; отсутствует в коде