Twitter4j Streamでエラー

MLに書いてあったやり方(typoなど修正済み)でstreamを試そうとしたらエラーが

import twitter4j.Status;
import twitter4j.StatusListener;
import twitter4j.TwitterException;
import twitter4j.TwitterStream;

public class TestShadow {
	public static void main(String[] args) throws TwitterException {
		TwitterStream streamTwitter = new TwitterStream("id", "user", new MyStatusListener());
		streamTwitter.spritzer();
	}

	class MyStatusListener implements StatusListener {
		public void onStatus(Status status) {
			System.out.println(status.getText());
		}

		public void onException(Exception ex) {
		}
	}
}
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	アクセス可能な型 TestShadow のエンクロージング・インスタンスがありません。型 TestShadow のエンクロージング・インスタンスで割り振りを限定する必要があります (例えば x.new A() で、x は TestShadow のインスタンス)。

	at test.TestShadow.main(TestShadow.java:10)

エンクロージング・インスタンスとやらがわからないので調べてみる。

こんな感じにMyStatusListenerをkruasuno外に出したらエラー消えた

import twitter4j.Status;
import twitter4j.StatusListener;
import twitter4j.TwitterException;
import twitter4j.TwitterStream;

public class TestShadow {
	public static void main(String[] args) throws TwitterException {
		TwitterStream streamTwitter = new TwitterStream("id", "user", new MyStatusListener());
		streamTwitter.spritzer();
	}
}

class MyStatusListener implements StatusListener {
	public void onStatus(Status status) {
		System.out.println(status.getText());
	}

	public void onException(Exception ex) {
	}
}