using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
public static void Main()
{
Print(new[] { 1, 2, 3, 4 });
Print(new[] { "hello", "world" });
Print(new[] { "just one!" });
}
public static void Print<T>(IEnumerable<T> collection) {
if (collection.Any()) {
var seenFirst = false;
T prev = default(T);
foreach (var current in collection) {
if (seenFirst) Foo(prev);
seenFirst = true;
prev = current;
}
Bar(prev);
}
}
public static void Foo(object o) { Console.WriteLine("Foo: {0}", o); }
public static void Bar(object o) { Console.WriteLine("Bar: {0}", o); }
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJUHJpbnQobmV3W10geyAxLCAyLCAzLCA0IH0pOwoJCVByaW50KG5ld1tdIHsgImhlbGxvIiwgIndvcmxkIiB9KTsKCQlQcmludChuZXdbXSB7ICJqdXN0IG9uZSEiIH0pOwoJfQoKICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgUHJpbnQ8VD4oSUVudW1lcmFibGU8VD4gY29sbGVjdGlvbikgewogICAgICAgICAgICBpZiAoY29sbGVjdGlvbi5BbnkoKSkgewogICAgICAgICAgICAgICAgdmFyIHNlZW5GaXJzdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgVCBwcmV2ID0gZGVmYXVsdChUKTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBjdXJyZW50IGluIGNvbGxlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoc2VlbkZpcnN0KSBGb28ocHJldik7CiAgICAgICAgICAgICAgICAgICAgc2VlbkZpcnN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBwcmV2ID0gY3VycmVudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEJhcihwcmV2KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIEZvbyhvYmplY3QgbykgeyBDb25zb2xlLldyaXRlTGluZSgiRm9vOiB7MH0iLCBvKTsgfQogICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBCYXIob2JqZWN0IG8pIHsgQ29uc29sZS5Xcml0ZUxpbmUoIkJhcjogezB9Iiwgbyk7IH0KfQo=