public void support(Trouble trouble) { if (resolve(trouble)) { done(trouble); } else if (next != null) { next.support(trouble); } else { fail(trouble); } }
protected void fail(Trouble trouble) { Console.WriteLine(trouble + "cannot be resolved."); }
protected void done(Trouble trouble) { Console.WriteLine(trouble + " is resolved by " + this + "."); }
protected abstract bool resolve(Trouble trouble);