code: func (pop *parsedOpcode) print(oneline bool) string {
  	// The reference implementation one-line disassembly replaces opcodes
  	// which represent values (e.g. OP_0 through OP_16 and OP_1NEGATE)
  	// with the raw value.  However, when not doing a one-line dissassembly,
  	// we prefer to show the actual opcode names.  Thus, only replace the
  	// opcodes in question when the oneline flag is set.
  	opcodeName := pop.opcode.name
  	if oneline {
  		if replName, ok := opcodeOnelineRepls[opcodeName]; ok {
  			opcodeName = replName
  		}
  
  		// Nothing more to do for non-data push opcodes.
  		if pop.opcode.length == 1 {
  			return opcodeName
  		}
  
  		return fmt.Sprintf("%x", pop.data)
  	}
  
  	// Nothing more to do for non-data push opcodes.
  	if pop.opcode.length == 1 {
  		return opcodeName
  	}
  
  	// Add length for the OP_PUSHDATA# opcodes.
  	retString := opcodeName
  	switch pop.opcode.length {
  	case -1:
  		retString += fmt.Sprintf(" 0x%02x", len(pop.data))
  	case -2:
  		retString += fmt.Sprintf(" 0x%04x", len(pop.data))
  	case -4:
  		retString += fmt.Sprintf(" 0x%08x", len(pop.data))
  	}
  
  	return fmt.Sprintf("%s 0x%02x", retString, pop.data)
  }
docs: // print returns a human-readable string representation of the opcode for use
  // in script disassembly.