public static bool IsMatch(this OSCMessage message, OSCMatchPattern pattern) { var messageTypes = message.GetTypes(); if (messageTypes.Length != pattern.Types.Length) { return(false); } for (var i = 0; i < messageTypes.Length; i++) { if (pattern.Types[i] == OSCValueType.True || pattern.Types[i] == OSCValueType.False) { if (messageTypes[i] != OSCValueType.True && messageTypes[i] != OSCValueType.False) { return(false); } } else if ((pattern.Types[i] != messageTypes[i])) { return(false); } } return(true); }