public void AddOperands(OperandCollection operands, ReadOnlySpan <byte> bytes) { if (operands == null) { throw new ArgumentNullException(nameof(operands)); } var byteOffset = 1; var operandTypes = Bits.BreakIntoTwos(bytes[0]); foreach (var type in operandTypes) { switch (type) { case OperandType.Small: operands.Add(type, bytes[byteOffset]); byteOffset += 1; break; case OperandType.Variable: operands.Add(type, bytes[byteOffset]); byteOffset += 1; break; case OperandType.Large: operands.Add(type, Bits.MakeWord(bytes.Slice(byteOffset, 2))); byteOffset += 2; break; case OperandType.Ommitted: break; default: throw new InvalidOperationException($"Unknown operand type {type:X}"); } } }