import qualified Data.Binary.Put as Put
import qualified Data.Binary.Get as Get
import qualified Data.ByteString.Lazy as B
-import Foreign.Storable
import Data.Word
import Data.Int
import Control.Monad
import Control.Applicative
-import Data.Ix (inRange)
-import Data.List (intercalate)
import Data.Word
-import Data.Bits
import qualified Data.Binary as Binary
-import qualified Data.Binary.Get as Get
-import Data.Char
import qualified Data.ByteString.Lazy as B
import Data.Array
-import qualified Data.Set as S
-import qualified Data.Map as M
import Data.BinaryState
import JVM.ClassFile
-import JVM.Types
-- | Immediate constant. Corresponding value will be added to base opcode.
data IMM =
import Data.Word
import Data.Bits
import Data.Binary
-import Data.Char
-import Data.String
import qualified Data.ByteString.Lazy as B
import Data.Array
import qualified Data.Set as S
import qualified Data.Map as M
-import Debug.Trace
-
import JVM.ClassFile
import JVM.Types