@Override
	public ListingField getField(ProxyObj<?> proxy, int varWidth) {
		Object obj = proxy.getObject();

		if (!enabled || !(obj instanceof Instruction)) {
			return null;
		}
		Instruction instr = (Instruction) obj;
		InstructionPrototype proto = instr.getPrototype();
		int operandCount = proto.getNumOperands();
		Mask instructionMask = proto.getInstructionMask();
		if (instructionMask == null) {
			return null;
		}
		Mask[] operandMasks = new Mask[operandCount];
		for (int i = 0; i < operandCount; i++) {
			operandMasks[i] = proto.getOperandValueMask(i);
			if (operandMasks[i] == null) {
				// disable operand mask display
				operandCount = 0;
				break;
			}
		}

		try {
			List<FieldElement> elements = new ArrayList<>();
			elements.add(
				getLine("M[m]: ", instructionMask.getBytes(), MaskColors.BITS, proxy, varWidth));
			elements.add(getLine("V[m]: ", instructionMask.applyMask(instr), MaskColors.VALUE,
				proxy, varWidth));

			for (int i = 0; i < operandCount; i++) {
				elements.add(getLine("M[" + i + "]: ", operandMasks[i].getBytes(), MaskColors.BITS,
					proxy, varWidth));
				elements.add(getLine("V[" + i + "]: ", operandMasks[i].applyMask(instr),
					MaskColors.VALUE, proxy, varWidth));
			}

			return ListingTextField.createMultilineTextField(this, proxy, elements,
				startX + varWidth, width, hlProvider);
		}
		catch (MemoryAccessException e) {
			return null;
		}
	}
Returns the FactoryField for the given object at index index.
@param varWidth the amount of variable width spacing for any fields
before this one.
@param proxy the object whose properties should be displayed.
Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/InstructionMaskValueFieldFactory.java