WALA/com.ibm.wala.core/dat/benign.xml

1881 lines
64 KiB
XML

<?xml version="1.0" ?>
<!-- specification of benign methods and some shortcuts for current analysis -->
<summary-spec>
<!-- the following are some shortcuts that are OK and helpful for CHA-like analysis,
to avoid spurious undecidability, or to account for JVM hacks -->
<classloader name="Primordial">
<package name="com/ibm/wala/model/java/util">
<class name="MalleableCollection" allocatable="true"></class>
</package>
<package name="com/ibm/jvm">
<class name="ExtendedSystem">
<method name="&lt;clinit&gt;" descriptor="()V"
static="true" />
<method name="isResettableJVM" descriptor="()Z"
static="true" />
<method name="newArray"
descriptor="(Ljava/lang/Class;ILjava/lang/Object;)Ljava/lang/Object;"
static="true" factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
</method>
</class>
</package>
<package name="java/beans">
<class name="Beans">
<method name="instantiate"
descriptor="(Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Object;"
static="true" factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
</method>
</class>
</package>
<package name="java/io">
<class name="BufferedInputStream">
<method name="fill" descriptor="()V" />
</class>
<class name="BufferedReader">
<method name="fill" descriptor="()V" />
<method name="read" descriptor="([CII)I" />
<method name="readLine"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="BufferedWriter">
<method name="&lt;init&gt;"
descriptor="(Ljava/io/Writer;I)V">
<call type="special" name="&lt;init&gt;"
class="Ljava/io/Writer" descriptor="()V" arg0="arg0" />
<putfield class="Ljava/io/BufferedWriter"
field="out" fieldType="Ljava/io/Writer" ref="arg0" value="arg1" />
<new def="L" class="Ljava/lang/String" />
<putfield class="Ljava/io/BufferedWriter"
field="lineSeparator" fieldType="Ljava/lang/String" ref="arg0"
value="L" />
<constant name="charSize" type="int" value="1" />
<new def="CB" class="[C" size="charSize" />
<putfield class="Ljava/io/BufferedWriter" field="cb"
fieldType="[C" ref="arg0" value="CB" />
</method>
</class>
<class name="ByteArrayOutputStream">
<method name="toString"
descriptor="(Ljava/lang/String;)Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="write" descriptor="(I)V" />
<method name="write" descriptor="([BII)V" />
</class>
<class name="CanonicalPath">
<method name="&lt;init&gt;"
descriptor="(Ljava/lang/String;Z)V" />
<method name="hashCode" descriptor="()I" />
</class>
<class name="CharArrayWritter">
<method name="write" descriptor="([CII)V" />
</class>
<class name="DataInputStream">
<method name="readUTF"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
<poison
reason="bogus model of java.io.DataInputStream" level="severe" />
</method>
</class>
<class name="DataOutputStream">
<method name="writeUTF"
descriptor="(Ljava/lang/String;)V">
<poison
reason="bogus model of java.io.DataOutputStream" level="severe" />
</method>
</class>
<class name="InputStreamReader">
<method name="&lt;init&gt;"
descriptor="(Ljava/io/InputStream;)V" />
<method name="&lt;init&gt;"
descriptor="(Ljava/io/InputStream;Ljava/lang/String;)V" />
<method name="close" descriptor="()V" />
<method name="getEncoding"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="read" descriptor="()I" />
<method name="read" descriptor="([CII)I" />
</class>
<class name="File">
<method name="&lt;init&gt;"
descriptor="(Ljava/lang/String;)V">
<new def="x" class="Ljava/lang/String" />
<putfield class="Ljava/io/File" field="path"
fieldType="Ljava/lang/String" ref="arg0" value="x" />
</method>
<method name="&lt;init&gt;"
descriptor="(Ljava/lang/String;Ljava/lang/String;)V">
<new def="x" class="Ljava/lang/String" />
<putfield class="Ljava/io/File" field="path"
fieldType="Ljava/lang/String" ref="arg0" value="x" />
</method>
<method name="&lt;init&gt;"
descriptor="(Ljava/io/File;Ljava/lang/String;)V">
<new def="x" class="Ljava/lang/String" />
<putfield class="Ljava/io/File" field="path"
fieldType="Ljava/lang/String" ref="arg0" value="x" />
</method>
<method name="compareTo" descriptor="(Ljava/io/File;)I" />
<method name="exists" descriptor="()Z" />
<method name="getAbsolutePath"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="getCanonicalPath"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="isDirectory" descriptor="()Z">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
<method name="lastModified" descriptor="()J" />
<method name="length" descriptor="()J" />
<method name="mkdirs" descriptor="()Z" />
</class>
<class name="FileDescriptor">
<method name="&lt;clinit&gt;" descriptor="()V"
static="true" />
</class>
<class name="FileInputStream">
<method name="&lt;clinit&gt;" descriptor="()V"
static="true" />
<method name="&lt;init&gt;"
descriptor="(Ljava/lang/String;)V" />
</class>
<class name="FileOutputStream">
<method name="&lt;clinit&gt;" descriptor="()V"
static="true" />
<method name="&lt;init&gt;"
descriptor="(Ljava/lang/String;)V" />
</class>
<class name="FilePermission">
<method name="&lt;clinit&gt;" descriptor="()V"
static="true" />
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
<method name="hashCode" descriptor="()I" />
</class>
<class name="FileSystem" allocatable="true">
<method name="getFileSystem"
descriptor="()Ljava/io/FileSystem;" static="true">
<new def="fs" class="Ljava/io/FileSystem" />
<return value="fs" />
</method>
<method name="checkAccess"
descriptor="(Ljava/io/File;Z)Z">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
<method name="delete" descriptor="(Ljava/io/File;)Z" />
<method name="getBooleanAttributes"
descriptor="(Ljava/io/File;)I" />
<method name="hashCode" descriptor="(Ljava/io/File;)I" />
<method name="isAbsolute"
descriptor="(Ljava/io/File;)Z" />
<method name="getPathSeparator" descriptor="()C" />
<method name="getSeparator" descriptor="()C">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
<method name="createFileExclusively"
descriptor="(Ljava/lang/String;)Z">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
<method name="setLastModifiedTime"
descriptor="(Ljava/io/File;J)Z">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
<method name="rename"
descriptor="(Ljava/io/File;Ljava/io/File;)Z" />
<method name="list"
descriptor="(Ljava/io/File;)[Ljava/lang/String;">
<constant name="size" type="int" value="1" />
<new def="str" class="Ljava/lang/String"
size="size" />
<new def="list" class="[Ljava/lang/String"
size="size" />
<aastore ref="list" value="str" index="null" />
<return value="list" />
</method>
</class>
<class name="InputStream" allocatable="true"></class>
<class name="ObjectInputStream">
<method name="&lt;clinit&gt;" descriptor="()V"
static="true" />
<method name="&lt;init&gt;"
descriptor="(Ljava/io/InputStream;)V" />
<method name="available" descriptor="()I" />
<method name="close" descriptor="()V" />
<method name="read" descriptor="()I" />
<method name="read" descriptor="([BII)I" />
<method name="readObject"
descriptor="()Ljava/lang/Object;" factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
</method>
</class>
<class name="ObjectOutputStream">
<method name="writeObject0"
descriptor="(Ljava/lang/Object;Z)V" />
</class>
<class name="ObjectStreamClass">
<method name="&lt;clinit&gt;" descriptor="()V"
static="true" />
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="OutputStreamWriter">
<method name="&lt;init&gt;"
descriptor="(Ljava/io/OutputStream;)V" />
<method name="&lt;init&gt;"
descriptor="(Ljava/io/OutputStream;Ljava/lang/String;)V" />
<method name="close" descriptor="()V" />
<method name="flush" descriptor="()V" />
<method name="flushBuffer" descriptor="()V" />
<method name="getEncoding"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="write"
descriptor="(Ljava/lang/String;II)V" />
<method name="write" descriptor="([CII)V" />
<method name="write" descriptor="(I)V" />
</class>
<class name="PrintStream">
<method name="close" descriptor="()V" />
<method name="newLine" descriptor="()V" />
<method name="write" descriptor="(I)V" />
<method name="write" descriptor="(Ljava/lang/String;)V" />
</class>
<class name="PrintWriter">
<method name="&lt;init&gt;"
descriptor="(Ljava/io/Writer;Z)V">
<call type="special" name="&lt;init&gt;"
class="Ljava/io/Writer" descriptor="()V" arg0="arg0" />
<putfield class="Ljava/io/PrintWriter" field="out"
fieldType="Ljava/io/Writer" ref="arg0" value="arg1" />
<new def="L" class="Ljava/lang/String" />
<putfield class="Ljava/io/PrintWriter"
field="lineSeparator" fieldType="Ljava/lang/String" ref="arg0"
value="L" />
</method>
<method name="close" descriptor="()V" />
<method name="flush" descriptor="()V" />
<method name="print" descriptor="(C)V" />
<method name="print" descriptor="(Ljava/lang/String;)V" />
<method name="println"
descriptor="(Ljava/lang/String;)V" />
</class>
<class name="RandomAccessFile">
<method name="&lt;clinit&gt;" descriptor="()V"
static="true" />
<method name="&lt;init&gt;"
descriptor="(Ljava/lang/String;Ljava/lang/String;)V" />
</class>
<class name="StreamTokenizer">
<method name="nextToken" descriptor="()I">
<new def="S" class="Ljava/lang/String" />
<putfield class="Ljava/io/StreamTokenizer"
field="sval" fieldType="Ljava/lang/String" ref="arg0" value="S" />
</method>
</class>
<class name="Writer">
<method name="write" descriptor="(I)V" />
<method name="write"
descriptor="(Ljava/lang/String;II)V" />
</class>
</package>
<package name="java/lang">
<class name="Class">
<method name="&lt;clinit&gt;" descriptor="()V"
static="true" />
<method name="checkMemberAccess"
descriptor="(ILjava/lang/ClassLoader;)V" />
<method name="desiredAssertionStatus" descriptor="()Z" />
<method name="forName"
descriptor="(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;"
static="true">
<new def="x" class="Ljava/lang/Class" />
<return value="x" />
<new def="y"
class="Ljava/lang/ClassNotFoundException" />
<throw value="y" />
<new def="z" class="Ljava/lang/ClassFormatError" />
<throw value="z" />
</method>
<method name="getClassLoader"
descriptor="()Ljava/lang/ClassLoader;">
<new def="x" class="Ljava/lang/ClassLoader" />
<return value="x" />
</method>
<method name="getConstructor"
descriptor="([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;">
<new def="x" class="Ljava/lang/reflect/Constructor" />
<new class="Ljava/lang/IllegalAccessException" />
<return value="x" />
</method>
<method name="getDeclaredConstructors"
descriptor="()[Ljava/lang/reflect/Constructor;">
<constant name="size" type="int" value="1" />
<new def="x" class="[Ljava/lang/reflect/Constructor"
size="size" />
<new def="y" class="Ljava/lang/reflect/Constructor" />
<aastore ref="x" value="y" index="0" />
<return value="x" />
</method>
<method name="getDeclaredField"
descriptor="(Ljava/lang/String;)Ljava/lang/reflect/Field;">
<new def="x" class="Ljava/lang/reflect/Field" />
<new class="Ljava/lang/IllegalAccessException" />
<return value="x" />
</method>
<method name="getDeclaredFields"
descriptor="()[Ljava/lang/reflect/Field;">
<constant name="size" type="int" value="1" />
<new def="x" class="[Ljava/lang/reflect/Field"
size="size" />
<new def="y" class="Ljava/lang/reflect/Field" />
<aastore ref="x" value="y" index="0" />
<return value="x" />
</method>
<method name="getDeclaredMethod"
descriptor="(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;">
<new def="x" class="Ljava/lang/reflect/Method" />
<new class="Ljava/lang/IllegalAccessException" />
<return value="x" />
</method>
<method name="getDeclaredMethods"
descriptor="()[Ljava/lang/reflect/Method;">
<constant name="size" type="int" value="1" />
<new def="x" class="[Ljava/lang/reflect/Method"
size="size" />
<new def="y" class="Ljava/lang/reflect/Method" />
<aastore ref="x" value="y" index="0" />
<return value="x" />
</method>
<method name="getField"
descriptor="(Ljava/lang/String;)Ljava/lang/reflect/Field;">
<new def="x" class="Ljava/lang/reflect/Field" />
<new class="Ljava/lang/IllegalAccessException" />
<return value="x" />
</method>
<method name="getMethod"
descriptor="(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;">
<new def="x" class="Ljava/lang/reflect/Method" />
<new class="Ljava/lang/IllegalAccessException" />
<return value="x" />
</method>
<method name="getMethods"
descriptor="()[Ljava/lang/reflect/Method;">
<constant name="size" type="int" value="1" />
<new def="x" class="[Ljava/lang/reflect/Method"
size="size" />
<new def="y" class="Ljava/lang/reflect/Method" />
<aastore ref="x" value="y" index="0" />
<return value="x" />
</method>
</class>
<class name="ClassLoader">
<method name="check" descriptor="()V" />
<method name="&lt;clinit&gt;" descriptor="()V"
static="true" />
<method name="&lt;init&gt;"
descriptor="(Ljava/lang/ClassLoader;)V">
<poison reason="user-defined ClassLoader"
level="severe" />
</method>
<method name="defineClass"
descriptor="(Ljava/lang/String;[BII)Ljava/lang/Class;">
<new def="x" class="Ljava/lang/Class" />
<return value="x" />
<poison
reason="found call to ClassLoader.defineClass(): dangerous"
level="severe" />
</method>
<method name="getResource"
descriptor="(Ljava/lang/String;)Ljava/net/URL;">
<new def="x" class="Ljava/net/URL" />
<return value="x" />
</method>
<method name="loadLibrary0"
descriptor="(Ljava/lang/Class;Ljava/io/File;)Z" static="true">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
<method name="getSystemClassLoader"
descriptor="()Ljava/lang/ClassLoader;" static="true">
<new def="x" class="Ljava/lang/ClassLoader" />
<return value="x" />
</method>
<method name="getSystemResource"
descriptor="(Ljava/lang/String;)Ljava/net/URL;" static="true">
<new def="x" class="Ljava/net/URL" />
<return value="x" />
</method>
<method name="initialize" descriptor="()V"></method>
<method name="resolveClass"
descriptor="(Ljava/lang/Class;)V">
</method>
</class>
<class name="Double">
<method name="parseDouble"
descriptor="(Ljava/lang/String;)D" static="true">
<new def="x" class="Ljava/lang/Double" />
<return value="x" />
</method>
<method name="toString"
descriptor="(D)Ljava/lang/String;" static="true">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="valueOf"
descriptor="(Ljava/lang/String;)Ljava/lang/Double;"
static="true">
<new def="x" class="Ljava/lang/Double" />
<return value="x" />
</method>
</class>
<class name="Float">
<method name="parseFloat"
descriptor="(Ljava/lang/String;)F" static="true">
<new def="x" class="Ljava/lang/Float" />
<return value="x" />
</method>
<method name="toString"
descriptor="(F)Ljava/lang/String;" static="true">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="valueOf"
descriptor="(Ljava/lang/String;)Ljava/lang/Float;" static="true">
<new def="x" class="Ljava/lang/Float" />
<return value="x" />
</method>
</class>
<class name="Integer">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="toString"
descriptor="(I)Ljava/lang/String;" static="true">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="parseInt" static="true"
descriptor="(Ljava/lang/String;)I">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
</class>
<class name="Long">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="Math">
<method name="acos" descriptor="(D)D" static="true" />
<method name="asin" descriptor="(D)D" static="true" />
<method name="atan" descriptor="(D)D" static="true" />
<method name="cos" descriptor="(D)D" static="true" />
<method name="log" descriptor="(D)D" static="true" />
<method name="sin" descriptor="(D)D" static="true" />
<method name="sqrt" descriptor="(D)D" static="true" />
<method name="tan" descriptor="(D)D" static="true" />
</class>
<class name="Object">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
<class name="Process" allocatable="true" />
<class name="Runtime">
<method name="exec"
descriptor="([Ljava/lang/String;)Ljava/lang/Process;">
<new def="x" class="Ljava/lang/Process" />
<return value="x" />
<poison
reason="cannot analyze foreign call via Runtime/exec"
level="moderate" />
</method>
<method name="getLocalizedInputStream"
descriptor="(Ljava/io/InputStream;)Ljava/io/InputStream;">
<return value="arg1" />
</method>
</class>
<class name="SecurityManager">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
<class name="Short">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="StackTraceElement">
<method name="getClassName"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="getFileName"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="getLineNumber" descriptor="()I" />
<method name="getMethodName"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="String">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="&lt;init&gt;" descriptor="([BII)V" />
<method name="&lt;init&gt;"
descriptor="([BLjava/lang/String;)V" />
<method name="&lt;init&gt;"
descriptor="([BIILjava/lang/String;)V" />
<method name="&lt;init&gt;"
descriptor="(Ljava/lang/StringBuffer;)V" />
<method name="getBTCConverter"
descriptor="(Ljava/lang/String;)Lsun/io/ByteToCharConverter;"
static="true">
<new def="x" class="Lsun/io/ByteToCharConverter" />
<return value="x" />
</method>
<method name="getBytes" descriptor="()[B">
<constant name="size" type="int" value="1" />
<new def="x" class="[B" size="size" />
<return value="x" />
</method>
<method name="getBytes"
descriptor="(Ljava/lang/String;)[B">
<constant name="size" type="int" value="1" />
<new def="x" class="[B" size="size"/>
<return value="x" />
</method>
</class>
<class name="StringBuffer">
<method name="append"
descriptor="(Ljava/lang/String;)Ljava/lang/StringBuffer;">
<return value="arg0" />
</method>
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="expandCapacity" descriptor="(I)V" />
<method name="copy" descriptor="()V" />
<method name="setLength" descriptor="(I)V" />
</class>
<class name="System">
<method name="exit" static="true" descriptor="(I)V" />
<method name="&lt;clinit&gt;" static="true"
descriptor="()V">
<new def="secure"
class="Ljava/lang/SecurityManager" />
<putstatic class="Ljava/lang/System"
field="security" fieldType="Ljava/lang/SecurityManager"
value="secure" />
<call type="static" name="initializeSystemClass"
class="Ljava/lang/System" descriptor="()V" />
</method>
<method name="initializeSystemClass" descriptor="()V"
static="true">
<new def="x" class="Ljava/util/Properties" />
<call type="special" name="&lt;init&gt;"
class="Ljava/util/Properties" descriptor="()V" arg0="x" />
<new def="key" class="Ljava/lang/String" />
<new def="value" class="Ljava/lang/String" />
<call type="virtual" name="put"
class="Ljava/util/Hashtable"
descriptor="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"
arg0="x" arg1="key" arg2="value" def="ignore" />
<new def="in" class="Ljava/io/FileInputStream" />
<call type="special" name="&lt;init&gt;"
class="Ljava/io/FileInputStream" descriptor="()V" arg0="in" />
<new def="o" class="Ljava/io/FileOutputStream" />
<call type="special" name="&lt;init&gt;"
class="Ljava/io/FileOutputStream" descriptor="()V" arg0="o" />
<new def="e" class="Ljava/io/FileOutputStream" />
<call type="special" name="&lt;init&gt;"
class="Ljava/io/FileOutputStream" descriptor="()V" arg0="e" />
<new def="out" class="Ljava/io/PrintStream" />
<call type="special" name="&lt;init&gt;"
class="Ljava/io/PrintStream"
descriptor="(Ljava/io/OutputStream;)V" arg0="out" arg1="o" />
<new def="err" class="Ljava/io/PrintStream" />
<call type="special" name="&lt;init&gt;"
class="Ljava/io/PrintStream"
descriptor="(Ljava/io/OutputStream;)V" arg0="err" arg1="e" />
<putstatic class="Ljava/lang/System" field="in"
fieldType="Ljava/io/InputStream" value="in" />
<putstatic class="Ljava/lang/System" field="out"
fieldType="Ljava/io/PrintStream" value="out" />
<putstatic class="Ljava/lang/System" field="err"
fieldType="Ljava/io/PrintStream" value="err" />
</method>
<method name="runFinalization" descriptor="()V"
static="true" />
</class>
<class name="System$1">
<method name="run" descriptor="()Ljava/lang/Object;">
<new def="x" class="Ljava/lang/Object" />
<return value="x" />
</method>
</class>
<class name="Thread">
<!-- tweak to avoid undecidability; this works assuming System/getSecurityManager() == null -->
<method name="checkAccess" descriptor="()V" />
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="interrupt" descriptor="()V" />
<method name="isInterrupted" descriptor="()Z" />
<method name="setPriority" descriptor="(I)V" />
<!-- tweak to avoid undecidability; this works assuming Thread/getThreadGroup() == null -->
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="Throwable">
<method name="printStackTrace" descriptor="()V" />
<method name="printStackTrace"
descriptor="(Ljava/io/PrintStream;)V" />
<method name="printStackTrace"
descriptor="(Ljava/io/PrintWriter;)V" />
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
</package>
<package name="java/lang/ref">
<class name="Reference">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
</package>
<package name="java/lang/reflect">
<class name="AccessibleObject">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="setAccessible" descriptor="(Z)V" />
</class>
<class name="Constructor">
<method name="newInstance"
descriptor="([Ljava/lang/Object;)Ljava/lang/Object;"
factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
<poison
reason="incomplete model of java.lang.reflect.Constructor.newInstance"
level="severe" />
</method>
</class>
<class name="Method">
<method name="getExceptionTypes"
descriptor="()[Ljava/lang/Class;">
<constant name="size" type="int" value="1" />
<new def="x" class="[Ljava/lang/Class" size="size"/>
<new def="y" class="Ljava/lang/Class" />
<aastore ref="x" value="y" index="0" />
<return value="x" />
</method>
<method name="getParameterTypes"
descriptor="()[Ljava/lang/Class;">
<constant name="size" type="int" value="1" />
<new def="x" class="[Ljava/lang/Class" size="size"/>
<new def="y" class="Ljava/lang/Class" />
<aastore ref="x" value="y" index="0" />
<return value="x" />
</method>
<method name="getName"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="invoke"
descriptor="(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;"
factory="true">
<new
class="Ljava/lang/reflect/InvocationTargetException" />
<poison
reason="dubious model of reflective call to Method/invoke"
level="severe" />
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
</method>
</class>
<class name="Modifier">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
</package>
<package name="java/math">
<class name="BigDecimal">
<method name="add"
descriptor="(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;">
<new def="x" class="Ljava/math/BigDecimal" />
<return value="x" />
</method>
<method name="compareTo"
descriptor="(Ljava/lang/Object;)I" />
<method name="compareTo"
descriptor="(Ljava/math/BigDecimal;)I" />
<method name="divide"
descriptor="(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;">
<new def="x" class="Ljava/math/BigDecimal" />
<return value="x" />
</method>
<method name="divide"
descriptor="(Ljava/math/BigDecimal;I)Ljava/math/BigDecimal;">
<new def="x" class="Ljava/math/BigDecimal" />
<return value="x" />
</method>
<method name="divide"
descriptor="(Ljava/math/BigDecimal;II)Ljava/math/BigDecimal;">
<new def="x" class="Ljava/math/BigDecimal" />
<return value="x" />
</method>
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
<method name="intValue" descriptor="()I" />
<method name="longValue" descriptor="()J" />
<method name="multiply"
descriptor="(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;">
<new def="x" class="Ljava/math/BigDecimal" />
<return value="x" />
</method>
<method name="negate"
descriptor="()Ljava/math/BigDecimal;">
<new def="x" class="Ljava/math/BigDecimal" />
<return value="x" />
</method>
<method name="subtract"
descriptor="(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;">
<new def="x" class="Ljava/math/BigDecimal" />
<return value="x" />
</method>
</class>
<class name="BigInteger">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="MutableBigInteger">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
</package>
<package name="java/net">
<class name="HttpURLConnection" allocatable="true">
<method name="disconnect" descriptor="()V" />
</class>
<class name="JarURLConnection" allocatable="true" />
<class name="NetworkInterface">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
<class name="InetAddress">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="&lt;init&gt;"
descriptor="(Ljava/lang/String;[B)V" />
<method name="anyLocalAddress"
descriptor="()Ljava/net/InetAddress;" static="true">
<new def="x" class="Ljava/net/InetAddress" />
<return value="x" />
</method>
<method name="getByName"
descriptor="(Ljava/lang/String;)Ljava/net/InetAddress;"
static="true">
<new def="x" class="Ljava/net/InetAddress" />
<return value="x" />
</method>
<method name="getHostName"
descriptor="(Z)Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="getLocalHost"
descriptor="()Ljava/net/InetAddress;" static="true">
<new def="x" class="Ljava/net/InetAddress" />
<return value="x" />
</method>
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="Inet4Address">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
<class name="Inet6Address">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
<class name="ServerSocket">
<method name="&lt;init&gt;" descriptor="(I)V" />
<method name="accept"
descriptor="()Ljava/net/Socket;">
<new def="x" class="Ljava/net/Socket" />
<return value="x" />
</method>
<method name="close" descriptor="()V" />
</class>
<class name="Socket">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="SocketInputStream">
<method name="close" descriptor="()V" />
<method name="socketRead"
descriptor="([BIILjava/net/SocketImpl;Ljava/io/FileDescriptor;)I" />
</class>
<class name="SocketOutputStream">
<method name="close" descriptor="()V" />
</class>
<class name="SocketPermission">
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
<method name="getIP" descriptor="()V" />
<method name="hashCode" descriptor="()I" />
</class>
<class name="URL">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="equals"
descriptor="(Ljava/lang/Object;)Z">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
<method name="&lt;init&gt;"
descriptor="(Ljava/lang/String;)V" />
<method name="getURLStreamHandler"
descriptor="(Ljava/lang/String;)Ljava/net/URLStreamHandler;"
static="true">
<new def="x" class="Ljava/net/URLStreamHandler" />
<return value="x" />
</method>
<method name="hashCode" descriptor="()I" />
<method name="openConnection"
descriptor="()Ljava/net/URLConnection;">
<new def="x" class="Ljava/net/HttpURLConnection" />
<new def="y" class="Ljava/net/JarURLConnection" />
<return value="x" />
<return value="y" />
</method>
<method name="openStream"
descriptor="()Ljava/io/InputStream;">
<new def="x" class="Ljava/io/InputStream" />
<return value="x" />
<poison
reason="suspect model of java/net/URL/openStream"
level="moderate" />
</method>
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="URLConnection">
<method name="connect" descriptor="()V" />
</class>
<class name="URLEncoder">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="encode"
descriptor="(Ljava/lang/String;)Ljava/lang/String;"
static="true">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="URLStreamHandler" allocatable="true" />
</package>
<package name="java/nio">
<class name="Bits">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
</package>
<package name="java/nio/channels/spi">
<class name="AbstractInterruptibleChannel">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
</package>
<package name="java/rmi/activation">
<class name="ActivationID">
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
</class>
<class name="ActivationGroupID">
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
</class>
</package>
<package name="java/rmi/server">
<class name="RemoteObject">
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
<method name="hashCode" descriptor="()I" />
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="ObjID">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
</package>
<package name="java/security">
<class name="AccessControlContext">
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
</class>
<class name="AccessController">
<method name="checkPermission"
descriptor="(Ljava/security/Permission;)V" static="true" />
</class>
<class name="ActivationID">
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
</class>
<class name="AlgorithmParameters">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="Identity">
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="IdentityScope">
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="MessageDigest">
<method name="getInstance"
descriptor="(Ljava/lang/String;)Ljava/security/MessageDigest;"
static="true">
<new def="x" class="Ljava/security/MessageDigest" />
<return value="x" />
</method>
</class>
<class name="PermissionCollection">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="Principal" allocatable="true">
<method name="getName"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="ProtectionDomain">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="Provider">
<method name="put"
descriptor="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;">
<new def="x" class="Ljava/lang/Object" />
<return value="x" />
<poison
reason="suspect model of java/security/Provider/put"
level="moderate" />
</method>
<method name="remove"
descriptor="(Ljava/lang/Object;)Ljava/lang/Object;">
<new def="x" class="Ljava/lang/Object" />
<return value="x" />
<poison
reason="suspect model of java/security/Provider/remove"
level="moderate" />
</method>
</class>
<class name="SecureClassLoader">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
<class name="Security">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
</package>
<package name="java/security/cert">
<class name="Certificate">
<method name="getEncoded" descriptor="()[B">
<constant name="size" type="int" value="1" />
<new def="x" class="[B" size="size"/>
<return value="x" />
</method>
</class>
<class name="X509CRL">
<method name="getEncoded" descriptor="()[B">
<constant name="size" type="int" value="1" />
<new def="x" class="[B" size="size"/>
<return value="x" />
</method>
</class>
<class name="X509CRLEntry">
<method name="getEncoded" descriptor="()[B">
<constant name="size" type="int" value="1" />
<new def="x" class="[B" size="size"/>
<return value="x" />
</method>
</class>
</package>
<package name="java/sql">
<class name="CallableStatement" allocatable="true" />
<class name="Connection" allocatable="true">
<method name="clearWarnings" descriptor="()V">
<new class="Ljava/sql/SQLException" />
</method>
<method name="close" descriptor="()V">
<new class="Ljava/sql/SQLException" />
</method>
<method name="commit" descriptor="()V">
<new class="Ljava/sql/SQLException" />
</method>
<method name="createStatement"
descriptor="()Ljava/sql/Statement;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/Statement" />
<return value="x" />
</method>
<method name="createStatement"
descriptor="(II)Ljava/sql/Statement;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/Statement" />
<return value="x" />
</method>
<method name="createStatement"
descriptor="(III)Ljava/sql/Statement;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/Statement" />
<return value="x" />
</method>
<method name="getAutoCommit" descriptor="()Z">
<new class="Ljava/sql/SQLException" />
</method>
<method name="getCatalog"
descriptor="()Ljava/lang/String;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="getTransactionIsolation"
descriptor="()I">
<new class="Ljava/sql/SQLException" />
</method>
<method name="prepareCall"
descriptor="(Ljava/lang/String;)Ljava/sql/CallableStatement;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/CallableStatement" />
<return value="x" />
</method>
<method name="prepareCall"
descriptor="(Ljava/lang/String;II)Ljava/sql/CallableStatement;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/CallableStatement" />
<return value="x" />
</method>
<method name="prepareStatement"
descriptor="(Ljava/lang/String;)Ljava/sql/PreparedStatement;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/PreparedStatement" />
<return value="x" />
</method>
<method name="prepareStatement"
descriptor="(Ljava/lang/String;II)Ljava/sql/PreparedStatement;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/PreparedStatement" />
<return value="x" />
</method>
<method name="rollback" descriptor="()V">
<new class="Ljava/sql/SQLException" />
</method>
<method name="setAutoCommit" descriptor="(Z)V">
<new class="Ljava/sql/SQLException" />
</method>
<method name="getAutoCommit" descriptor="()Z">
<new class="Ljava/sql/SQLException" />
</method>
</class>
<class name="Date">
<method name="&lt;init&gt;" descriptor="(III)V" />
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="valueOf"
descriptor="(Ljava/lang/String;)Ljava/sql/Date;" static="true">
<new def="x" class="Ljava/sql/Date" />
<return value="x" />
</method>
</class>
<class name="DriverManager">
<method name="getConnection" static="true"
descriptor="(Ljava/lang/String;)Ljava/sql/Connection;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/Connection" />
<return value="x" />
</method>
<method name="getConnection" static="true"
descriptor="(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/Connection" />
<return value="x" />
</method>
<method name="getConnection" static="true"
descriptor="(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/Connection" />
<return value="x" />
</method>
</class>
<class name="PreparedStatement" allocatable="true">
<method name="executeQuery"
descriptor="()Ljava/sql/ResultSet;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/ResultSet" />
<return value="x" />
</method>
<method name="execute" descriptor="()Z">
<new class="Ljava/sql/SQLException" />
</method>
<method name="executeUpdate" descriptor="()I">
<new class="Ljava/sql/SQLException" />
</method>
<method name="getUpdateCount" descriptor="()I" />
<method name="setBigDecimal"
descriptor="(ILjava/math/BigDecimal;)V" />
<method name="setBinaryStream"
descriptor="(ILjava/io/InputStream;I)V" />
<method name="setDate" descriptor="(ILjava/sql/Date;)V" />
<method name="setDouble" descriptor="(ID)V" />
<method name="setInt" descriptor="(II)V" />
<method name="setNull" descriptor="(II)V" />
<method name="setString"
descriptor="(ILjava/lang/String;)V" />
<method name="setTimestamp"
descriptor="(ILjava/sql/Timestamp;)V" />
</class>
<class name="ResultSet" allocatable="true">
<method name="close" descriptor="()V">
<new class="Ljava/sql/SQLException" />
</method>
<method name="first" descriptor="()Z" />
<method name="getBigDecimal"
descriptor="(Ljava/lang/String;)Ljava/math/BigDecimal;">
<new def="x" class="Ljava/math/BigDecimal" />
<return value="x" />
</method>
<method name="getDouble"
descriptor="(Ljava/lang/String;)D">
<new class="Ljava/sql/SQLException" />
</method>
<method name="getDouble" descriptor="(I)D">
<new class="Ljava/sql/SQLException" />
</method>
<method name="getFloat"
descriptor="(Ljava/lang/String;)F">
<new class="Ljava/sql/SQLException" />
</method>
<method name="getFloat" descriptor="(I)F">
<new class="Ljava/sql/SQLException" />
</method>
<method name="getInt" descriptor="(I)I">
<new class="Ljava/sql/SQLException" />
</method>
<method name="getInt"
descriptor="(Ljava/lang/String;)I">
<new class="Ljava/sql/SQLException" />
</method>
<method name="getMetaData"
descriptor="()Ljava/sql/ResultSetMetaData;">
<new def="x" class="Ljava/sql/ResultSetMetaData" />
<return value="x" />
</method>
<method name="getObject"
descriptor="(Ljava/lang/String;)Ljava/lang/Object;"
factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
</method>
<method name="getString"
descriptor="(Ljava/lang/String;)Ljava/lang/String;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="getString"
descriptor="(I)Ljava/lang/String;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="getTimestamp"
descriptor="(Ljava/lang/String;)Ljava/sql/Timestamp;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/Timestamp" />
<return value="x" />
</method>
<method name="next" descriptor="()Z">
<new class="Ljava/sql/SQLException" />
</method>
<method name="updateObject"
descriptor="(Ljava/lang/String;Ljava/lang/Object;)V">
<new class="Ljava/sql/SQLException" />
</method>
</class>
<class name="ResultSetMetaData" allocatable="true">
<method name="getColumnCount" descriptor="()I"></method>
<method name="getColumnLabel"
descriptor="(I)Ljava/lang/String;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="SQLException">
<method name="printStackTrace"
descriptor="(Ljava/io/PrintStream;)V" />
</class>
<class name="Statement" allocatable="true">
<method name="close" descriptor="()V">
<new class="Ljava/sql/SQLException" />
</method>
<method name="execute"
descriptor="(Ljava/lang/String;)Z">
<new class="Ljava/sql/SQLException" />
</method>
<method name="executeQuery"
descriptor="(Ljava/lang/String;)Ljava/sql/ResultSet;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/ResultSet" />
<return value="x" />
</method>
<method name="executeUpdate"
descriptor="(Ljava/lang/String;)I">
<new class="Ljava/sql/SQLException" />
</method>
<method name="getUpdateCount" descriptor="()I" />
<method name="getResultSet"
descriptor="()Ljava/sql/ResultSet;">
<new class="Ljava/sql/SQLException" />
<new def="x" class="Ljava/sql/ResultSet" />
<return value="x" />
</method>
</class>
<class name="Timestamp" allocatable="true">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
</package>
<package name="java/text">
<class name="Collator" allocatable="true">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="getInstance"
descriptor="(Ljava/util/Locale;)Ljava/text/Collator;"
static="true">
<new def="x" class="Ljava/text/Collator" />
<return value="x" />
</method>
</class>
<class name="DateFormat" allocatable="true">
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
<method name="format"
descriptor="(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;">
<new def="x" class="Ljava/lang/StringBuffer" />
<return value="x" />
<poison
reason="questionable model of java.text.DateFormat.format"
level="moderate" />
</method>
<method name="format"
descriptor="(Ljava/util/Date;)Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
<poison
reason="questionable model of java.text.DateFormat.format"
level="moderate" />
</method>
<method name="getDateInstance"
descriptor="(I)Ljava/text/DateFormat;" static="true">
<new def="x" class="Ljava/text/DateFormat" />
<return value="x" />
</method>
<method name="getDateTimeInstance"
descriptor="(II)Ljava/text/DateFormat;" static="true">
<new def="x" class="Ljava/text/DateFormat" />
<return value="x" />
</method>
<method name="getTimeInstance"
descriptor="(I)Ljava/text/DateFormat;" static="true">
<new def="x" class="Ljava/text/DateFormat" />
<return value="x" />
</method>
<method name="parse"
descriptor="(Ljava/lang/String;)Ljava/util/Date;">
<new def="x" class="Ljava/util/Date" />
<return value="x" />
</method>
<method name="setTimeZone"
descriptor="(Ljava/util/TimeZone;)V">
</method>
</class>
<class name="DecimalFormat">
<method name="&lt;init&gt;" descriptor="()V" />
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
</class>
<class name="FieldPosition">
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
</class>
<class name="Format">
<method name="format"
descriptor="(Ljava/lang/Object;)Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
<poison
reason="questionable model of java/text/Format.format"
level="moderate" />
</method>
</class>
<class name="MessageFormat">
<method name="&lt;init&gt;"
descriptor="(Ljava/lang/String;)V" />
<method name="format"
descriptor="([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;">
<new def="x" class="Ljava/lang/StringBuffer" />
<return value="x" />
<poison
reason="questionable model of java/text/MessageFormat.format"
level="moderate" />
</method>
<method name="format"
descriptor="([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;I)Ljava/lang/StringBuffer;">
<new def="x" class="Ljava/lang/StringBuffer" />
<return value="x" />
<poison
reason="questionable model of java/text/MessageFormat.format"
level="moderate" />
</method>
<method name="format"
descriptor="(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;"
static="true">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
<poison
reason="questionable model of java/text/MessageFormat/format"
level="moderate" />
</method>
<method name="setLocale"
descriptor="(Ljava/util/Locale;)V">
</method>
</class>
<class name="NumberFormat" allocatable="true">
<method name="format"
descriptor="(D)Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="format"
descriptor="(J)Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="getCurrencyInstance"
descriptor="()Ljava/text/NumberFormat;" static="true">
<new def="x" class="Ljava/text/NumberFormat" />
<return value="x" />
</method>
<method name="getCurrencyInstance"
descriptor="(Ljava/util/Locale;)Ljava/text/NumberFormat;"
static="true">
<new def="x" class="Ljava/text/NumberFormat" />
<return value="x" />
</method>
<method name="getInstance"
descriptor="()Ljava/text/NumberFormat;" static="true">
<new def="x" class="Ljava/text/NumberFormat" />
<return value="x" />
</method>
</class>
<class name="SimpleDateFormat">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="&lt;init&gt;" descriptor="()V" />
<method name="&lt;init&gt;"
descriptor="(Ljava/lang/String;)V" />
<method name="&lt;init&gt;"
descriptor="(IILjava/util/Locale;)V" />
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
</class>
</package>
<package name="java/util">
<class name="Calendar" allocatable="true">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="add" descriptor="(II)V" />
<method name="getInstance"
descriptor="()Ljava/util/Calendar;" static="true">
<new def="x" class="Ljava/util/Calendar" />
<return value="x" />
</method>
<method name="getTimeInMillis" descriptor="()J" />
</class>
<class name="Currency">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
<class name="Date">
<method name="&lt;init&gt;" descriptor="(III)V" />
<method name="getDate" descriptor="()I" />
<method name="getHours" descriptor="()I" />
<method name="getMinutes" descriptor="()I" />
<method name="getMonth" descriptor="()I" />
<method name="getSeconds" descriptor="()I" />
<method name="getTime" descriptor="()J" />
<method name="getYear" descriptor="()I" />
<method name="setTime" descriptor="(J)V" />
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="Locale">
<method name="getDefault"
descriptor="()Ljava/util/Locale;" static="true">
<new def="x" class="Ljava/util/Locale" />
<return value="x" />
</method>
</class>
<class name="Properties">
<method name="load"
descriptor="(Ljava/io/InputStream;)V" />
</class>
<class name="ResourceBundle" allocatable="true">
<method name="getString"
descriptor="(Ljava/lang/String;)Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="getBundle"
descriptor="(Ljava/lang/String;)Ljava/util/ResourceBundle;"
static="true">
<new def="x" class="Ljava/util/ResourceBundle" />
<return value="x" />
<poison
reason="bogus model of java.util.ResourceBundle.getBundle"
level="moderate" />
</method>
<method name="getBundle"
descriptor="(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/ResourceBundle;"
static="true">
<new def="x" class="Ljava/util/ResourceBundle" />
<return value="x" />
<poison
reason="bogus model of java.util.ResourceBundle.getBundle"
level="moderate" />
</method>
<method name="getBundle"
descriptor="(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)Ljava/util/ResourceBundle;"
static="true">
<new def="x" class="Ljava/util/ResourceBundle" />
<return value="x" />
<poison
reason="bogus model of java.util.ResourceBundle.getBundle"
level="moderate" />
</method>
</class>
<class name="TimeZone" allocatable="true">
<method name="getDefault"
descriptor="()Ljava/util/TimeZone;" static="true">
<new def="x" class="Ljava/util/TimeZone" />
<return value="x" />
</method>
<method name="getTimeZone"
descriptor="(Ljava/lang/String;)Ljava/util/TimeZone;"
static="true">
<new def="x" class="Ljava/util/TimeZone" />
<return value="x" />
</method>
</class>
</package>
<package name="java/util/logging">
<class name="LogRecord">
<method name="getSourceClassName"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="getSourceMethodName"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
</package>
<package name="java/util/zip">
<class name="CRC32">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="updateBytes" descriptor="(I[BII)I"
static="true" />
</class>
<class name="Deflater">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="deflateBytes" descriptor="([BII)I">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
<method name="end" static="true" descriptor="(J)V" />
<method name="getTotalIn" static="true"
descriptor="(J)I">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
<method name="getTotalOut" static="true"
descriptor="(J)I">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
<method name="init" static="true" descriptor="(IIZ)J">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
<method name="reset" descriptor="(J)V" static="true" />
</class>
<class name="Inflater">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="&lt;init&gt;" descriptor="(Z)V" />
<method name="end" descriptor="()V" />
<method name="reset" descriptor="()V" />
<method name="getTotalIn" descriptor="(J)I"
static="true" />
<method name="getTotalOut" descriptor="(J)I"
static="true" />
</class>
<class name="InflaterInputStream">
<method name="close" descriptor="()V" />
<method name="read" descriptor="([BII)I">
<constant name="yes" type="int" value="1" />
<constant name="no" type="int" value="0" />
<return value="yes" />
<return value="no" />
</method>
</class>
<class name="ZipEntry">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="&lt;init&gt;" descriptor="(J)V" />
<method name="initFields" descriptor="(J)V" />
</class>
<class name="ZipFile">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="&lt;init&gt;"
descriptor="(Ljava/io/File;)V" />
<method name="freeEntry" descriptor="(JJ)V"
static="true" />
<method name="getNextEntry" descriptor="(JI)J"
static="true" />
<method name="getInputStream"
descriptor="(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;">
<new def="x" class="Ljava/io/InputStream" />
<return value="x" />
</method>
<method name="getZipMessage"
descriptor="(J)Ljava/lang/String;" static="true">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
<method name="getEntry"
descriptor="(JLjava/lang/String;)J" static="true" />
<method name="close" descriptor="()V" />
<method name="close" descriptor="(J)V" static="true" />
</class>
</package>
<package name="javax/accessibility">
<class name="AccessibleBundle">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="AccessibleRelationSet">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="AccessibleStateSet">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
</package>
<package name="javax/naming">
<class name="InitialContext">
<method name="&lt;init&gt;" descriptor="()V" />
<method name="&lt;init&gt;"
descriptor="(Ljava/util/Hashtable;)V" />
<method name="getDefaultInitCtx"
descriptor="()Ljavax/naming/Context;">
<new def="x" class="Ljavax/naming/InitialContext" />
<return value="x" />
</method>
<method name="lookup"
descriptor="(Ljava/lang/String;)Ljava/lang/Object;"
factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
<new def="y" class="Ljavax/naming/NamingException" />
<throw value="y" />
</method>
</class>
</package>
<package name="javax/naming/directory">
<class name="BasicAttribute">
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
</package>
<package name="javax/rmi">
<class name="PortableRemoteObject">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="narrow"
descriptor="(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;"
static="true" factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
<poison
reason="bogus model of PortableRemoteObject.narrow"
level="severe" />
</method>
</class>
</package>
<package name="javax/sql">
<class name="DataSource" allocatable="true">
<method name="getConnection"
descriptor="()Ljava/sql/Connection;">
<new def="x" class="Ljava/sql/Connection" />
<return value="x" />
</method>
<method name="getConnection"
descriptor="(Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;">
<new def="x" class="Ljava/sql/Connection" />
<return value="x" />
</method>
</class>
</package>
<package name="javax/rmi/CORBA">
<class name="PortableRemoteObject">
<method name="narrow"
descriptor="(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;"
static="true" factory="true">
<new def="x" class="Lcom/ibm/wala/Malleable" />
<return value="x" />
<poison
reason="bogus model of PortableRemoteObject.narrow"
level="severe" />
</method>
</class>
<class name="Stub">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
<method name="hashCode" descriptor="()I" />
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
<class name="Util">
<method name="&lt;clinit&gt;" static="true"
descriptor="()V" />
</class>
</package>
<package name="org/omg/CORBA/portable">
<class name="ObjectImpl">
<method name="equals"
descriptor="(Ljava/lang/Object;)Z" />
<method name="toString"
descriptor="()Ljava/lang/String;">
<new def="x" class="Ljava/lang/String" />
<return value="x" />
</method>
</class>
</package>
<package name="sun/misc">
<class name="Launcher">
<method name="&lt;clinit&gt;" descriptor="()V"
static="true" />
</class>
</package>
</classloader>
</summary-spec>