@Test public void testLock() { assertNotSame(new DefaultMainAction() { @Override public void run() { } }.lock(), new DefaultMainAction() { @Override public void run() { } }.lock()); }
@Override public Object lock() { return lock; }
DefaultMainAction extends MainAction { @Override public Object lock() { return lock; } }
DefaultMainAction extends MainAction { @Override public Object lock() { return lock; }  }
DefaultMainAction extends MainAction { @Override public Object lock() { return lock; }  @Override boolean isValid(); @Override Object lock(); }
DefaultMainAction extends MainAction { @Override public Object lock() { return lock; }  @Override boolean isValid(); @Override Object lock();  }