Intersect(
     this ClangCommon.ICommonCompilerSettings shared,
     ClangCommon.ICommonCompilerSettings other)
 {
     if (shared.AllWarnings != other.AllWarnings)
     {
         shared.AllWarnings = null;
     }
     if (shared.ExtraWarnings != other.ExtraWarnings)
     {
         shared.ExtraWarnings = null;
     }
     if (shared.Pedantic != other.Pedantic)
     {
         shared.Pedantic = null;
     }
     if (shared.Visibility != other.Visibility)
     {
         shared.Visibility = null;
     }
     if (shared.StrictAliasing != other.StrictAliasing)
     {
         shared.StrictAliasing = null;
     }
 }
 Delta(
     this ClangCommon.ICommonCompilerSettings delta,
     ClangCommon.ICommonCompilerSettings lhs,
     ClangCommon.ICommonCompilerSettings rhs)
 {
     delta.AllWarnings = (lhs.AllWarnings != rhs.AllWarnings) ? lhs.AllWarnings : null;
     delta.ExtraWarnings = (lhs.ExtraWarnings != rhs.ExtraWarnings) ? lhs.ExtraWarnings : null;
     delta.Pedantic = (lhs.Pedantic != rhs.Pedantic) ? lhs.Pedantic : null;
     delta.Visibility = (lhs.Visibility != rhs.Visibility) ? lhs.Visibility : null;
     delta.StrictAliasing = (lhs.StrictAliasing != rhs.StrictAliasing) ? lhs.StrictAliasing : null;
 }
 Clone(
     this ClangCommon.ICommonCompilerSettings settings,
     ClangCommon.ICommonCompilerSettings other)
 {
     settings.AllWarnings = other.AllWarnings;
     settings.ExtraWarnings = other.ExtraWarnings;
     settings.Pedantic = other.Pedantic;
     settings.Visibility = other.Visibility;
     settings.StrictAliasing = other.StrictAliasing;
 }