@Override
 public String getOriginalAssembly() {
   return "sget-wide "
       + regTo1.getOriginalIndexString()
       + "|"
       + regTo2.getOriginalIndexString()
       + ", "
       + fieldClass.getPrettyName()
       + "."
       + fieldName;
 }
  @Override
  public void instrument(DexCode_InstrumentationState state) {
    val code = getMethodCode();
    val classHierarchy = getParentFile().getHierarchy();

    val defClass = classHierarchy.getBaseClassDefinition(fieldClass);
    val defField = defClass.getAccessedStaticField(new DexFieldId(fieldName, fieldType));

    if (defField == null)
      System.err.println(
          "warning: cannot find accessed static field "
              + fieldClass.getPrettyName()
              + "."
              + fieldName);

    val fieldDeclaringClass = defField.getParentClass();

    if (fieldDeclaringClass.isInternal()) {
      // FIELD OF PRIMITIVE TYPE DEFINED INTERNALLY
      // retrieve taint from the adjoined field
      val field =
          DexUtils.getField(
              getParentFile(), fieldDeclaringClass.getClassType(), fieldName, fieldType);
      code.replace(
          this,
          new DexCodeElement[] {
            this,
            new DexInstruction_StaticGet(
                code, state.getTaintRegister(regTo1), state.getCache().getTaintField(field))
          });
    } else {
      // FIELD OF PRIMITIVE TYPE DEFINED EXTERNALLY
      // get the taint from adjoined field in special global class
      code.replace(
          this,
          new DexCodeElement[] {
            this,
            new DexInstruction_StaticGet(
                code,
                state.getTaintRegister(regTo1),
                state
                    .getCache()
                    .getTaintField_ExternalStatic(
                        fieldClass, (DexPrimitiveType) fieldType, fieldName))
          });
    }
  }