Toda vez que eu compilo o meu código acontece o seguinte erro:
No enclosing instance of type TesteTop is accessible. Must qualify the allocation with an enclosing instance of type TesteTop (e.g. x.new A() where x is an instance of TesteTop).
    at br.com.bytebank.testes.util.TesteTop.main(TesteTop.java:38)e não consegui entender ele, e já olhei se falta algum " { } ", mas o eclipse mostra que não. Enfim o meu código é esse:
package br.com.bytebank.testes.util;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import br.com.bytebank.modelo.Conta;
import br.com.bytebank.modelo.ContaCorrente;
import br.com.bytebank.modelo.ContaPoupanca;
public class TesteTop {
    public static void main(String[] args) {
        Conta cc1 = new ContaCorrente(22, 33);
        cc1.deposita(333.0);
        Conta cc2 = new ContaPoupanca(22, 44);
        cc2.deposita(444.0);
        Conta cc3 = new ContaCorrente(22, 11);
        cc3.deposita(111.0);
        Conta cc4 = new ContaPoupanca(22, 22);
        cc4.deposita(222.0);
        List<Conta> lista = new ArrayList<>();
        lista.add(cc1);
        lista.add(cc2);
        lista.add(cc3);
        lista.add(cc4);
        for(Conta conta : lista) {
            System.out.println(conta);
        }
        NumeroDaContaComparator comparator = new NumeroDaContaComparator();
        lista.sort(comparator);
        System.out.println("-----------------------");
        for(Conta conta: lista) {
            System.out.println(conta);
        }
    }
    class NumeroDaContaComparator implements Comparator<Conta>{
        @Override
        public int compare(Conta c1, Conta c2) {
            if(c1.getNumero() < c2.getNumero()) {
                return -1;
            } else if(c1.getNumero() > c2.getNumero()) {
                return 1;
            } else {
                return 0;
            }
        }
    }
}
Alguém entendeu porque?