Finalized Pattern Matching Syntac, Continued to refactor Object Binding logic.
PatternMatching Syntax:

var myLex = someTypeImplementingILexicalOrOneOfItsDescendentInterfaces;
TResult result =
myLex
    .Match() //Begins pattern matching over myLex
           .Case<TDerrivedLexical1>(Action<TDerrivedLexical1>) // The Type of Case<Type> must derrive
           .Case<TDerrivedLexical2>(Action<TDerrivedLexical2>) // from MyLex's most derrived InterfaceType
           .Yield<TResult>() // Transitions from a void pattern match into a result yielding pattern match
           .Case<TDerrivedLexical3>(Func<TDerrivedLexical3, TResult>) // arg is a function returning TResult
           .When<TDerrivedLexical4>(Func<TDerrivedLexical4, bool>)    // Applies a predicate to determine if
           .Then<TDerrivedLexical4>(Func<TDerrivedLexical4, TResult>) // the Then (conditional) is executed
           .Case<TDerrivedLexical5>( Func<TDerrivedLexical5, TResult>) // Same as case 3
     .Result(); // Gets the result of the first matched result returning case or the default(TResult) if no matches