/**
 * @typedef {string} hex64
 * @typedef {hex64} JavaRefID
 * @typedef {number} VSCThreadID
 * @typedef {number} VSCVariableReference
 * A variable reference is a number, encoding the thread, stack level and variable index, using:
 * 
 *     variableReference = {threadid * 1e9} + {level * 1e6} + varindex
 * 
 * This allows 1M variables (locals, fields, array elements) per call stack frame
 * and 1000 frames per call stack

 * @typedef {number} byte
 * 
 * @typedef {JavaRefID} JavaFrameID
 * @typedef {JavaRefID} JavaThreadID
 * @typedef {JavaRefID} JavaClassID
 * @typedef {JavaRefID} JavaMethodID
 * @typedef {JavaRefID} JavaFieldID
 * @typedef {JavaRefID} JavaObjectID
 * @typedef {JavaRefID} JavaTypeID
 *
 * @typedef JavaFrame
 * @property {JavaFrameID} frameid
 * @property {JavaLocation} location
 * 
 * @typedef JavaClassInfo
 * @property {*} reftype
 * @property {*} status
 * @property {JavaType} type
 * @property {JavaTypeID} typeid
 * 
 * @typedef JavaMethod
 * @property {string} genericsig
 * @property {JavaMethodID} methodid
 * @property {byte} modbits
 * @property {string} name
 * @property {string} sig
 * 
 * @typedef JavaSource
 * @property {string} sourcefile
 * 
 * @typedef JavaLocation
 * @property {JavaClassID} cid
 * @property {hex64} idx
 * @property {JavaMethodID} mid
 * @property {1} type
 * 
 * @typedef JavaLineTable
 * @property {hex64} start
 * @property {hex64} end
 * @property {JavaLineTableEntry[]} lines
 * 
 * @typedef JavaLineTableEntry
 * @property {hex64} linecodeidx
 * @property {number} linenum
 * 
 *
 * @typedef JavaField
 * @property {JavaFieldID} fieldid
 * @property {string} name
 * @property {JavaType} type
 * @property {string} genericsig
 * @property {number} modbits
 *
 * @typedef JavaVar
 * @property {*} codeidx
 * @property {string} name
 * @property {JavaType} type
 * @property {string} genericsig
 * @property {number} length
 * @property {number} slot
 * 
 * @typedef JavaVarTable
 * @property {number} argCnt
 * @property {JavaVar[]} vars
 * 
 * @typedef {'byte'|'short'|'int'|'long'|'boolean'|'char'|'float'|'double'|'void'|'oref'} JavaValueType
 * 
 * @typedef HitMod
 * @property {1} modkind
 * @property {number} count
 * @property {() => void} encode
 * 
 * @typedef ClassMatchMod
 * @property {5} modkind
 * @property {string} pattern
 * 
 * @typedef LocMod
 * @property {7} modkind
 * @property {*} loc
 * @property {() => void} encode
 * 
 * @typedef ExOnlyMod
 * @property {8} modkind
 * @property {*} reftypeid
 * @property {boolean} caught
 * @property {boolean} uncaught
 **/


/**
 * @typedef {"local" | "literal" | "field" | "exception" | "return" | "arrelem" | "super" | "class" | "package"} DebuggerValueType
 * @typedef {'in'|'over'|'out'} DebuggerStepType
 * @typedef {'set'|'notloaded'|'enabled'|'removed'} BreakpointState
 * @typedef {string} BreakpointID
 * @typedef {string} CMLKey
 * @typedef {number} JDWPRequestID
 * @typedef {JDWPRequestID} StepID
 * @typedef {'caught'|'uncaught'|'both'} ExceptionBreakMode
 * @typedef {'ignore'|'warn'|'stop'} StaleBuildSetting
 * 
 */

/**
 * @typedef ADBFileTransferParams
 * @property {string} pathname
 * @property {Buffer} data
 * @property {number} mtime
 * @property {number} perms
 *
 */
