package soot.dex.instructions;

import org.jf.dexlib.Code.Instruction;

import soot.dex.DexBody;

public abstract class PseudoInstruction extends DexlibAbstractInstruction {

  public PseudoInstruction(Instruction instruction, int codeAddress) {
    super(instruction, codeAddress);
    // TODO Auto-generated constructor stub
  }

  int dataFirstByte = -1;
  int dataLastByte = -1;
  int dataSize = -1;
  byte[] data = null;
  boolean loaded = false;

  public boolean isLoaded() {
    return loaded;
  }

  public void setLoaded(boolean loaded) {
    this.loaded = loaded;
  }

  public byte[] getData() {
    return data;
  }

  protected void setData(byte[] data) {
    this.data = data;
  }

  public int getDataFirstByte() {
    return dataFirstByte;
  }

  protected void setDataFirstByte(int dataFirstByte) {
    this.dataFirstByte = dataFirstByte;
  }

  public int getDataLastByte() {
    return dataLastByte;
  }

  protected void setDataLastByte(int dataLastByte) {
    this.dataLastByte = dataLastByte;
  }

  public int getDataSize() {
    return dataSize;
  }

  protected void setDataSize(int dataSize) {
    this.dataSize = dataSize;
  }

  public abstract void computeDataOffsets(DexBody body);

  
  
  
  
}

@@ -716,32 +716,132 @@
 taFirstByte() %7B%0A
+    if (dataFirstByte == -1)%0A      throw new RuntimeException(%22Error: dataFirstByte was not set!%22);%0A
     return dataF
@@ -842,32 +842,32 @@
  dataFirstByte;%0A
-
   %7D%0A%0A  protected
@@ -984,24 +984,122 @@
 astByte() %7B%0A
+    if (dataLastByte == -1)%0A      throw new RuntimeException(%22Error: dataLastByte was not set!%22);%0A
     return d
@@ -1237,24 +1237,119 @@
 ataSize() %7B%0A
+    if (dataSize == -1)%0A      throw new RuntimeException(%22Error: dataFirstByte was not set!%22);%0A
     return d
@@ -1434,32 +1434,32 @@
  dataSize;%0A  %7D%0A%0A
-
   public abstrac
@@ -1497,16 +1497,33 @@
 dy body)
+ throws Exception
 ;%0A%0A  %0A  

Check in getters.