Created By: jlmaddox
Created At: Wed, 07 Mar 2018 15:04:12 -0600
Input Dataset: 2015 September/GitHub
Last Submitted At: Wed, 07 Mar 2018 15:04:12 -0600
Last Finished At: Wed, 07 Mar 2018 16:39:00 -0600 (1h 34m 48s)
Source Code
p: Project = input;
# for outputting method pair information
out: output collection of string;
# for outputting aggregate values like number of method pairs
stat: output sum[string] of int;
########################################
### Declarations ###
########################################
# maps the declaration name to its methods
effects: map[string] of string;
# maps the declaration to its superclass name
supers: map[string] of string;
# maps the declaration name to its static methods
statics: map[string] of string;
# (OUTDATED)
# Format:
# [decl name] =
# methodName:(!n or !y calls super method):Exceptions,That,Are,Thrown:
# Arg,Type,Names:(!n or !y is abstract method)#nextMethodName
#
# When true, assumes that methods without branches do not throw exceptions
IGNORE_NONBRANCHING_EXS := false;
# when true, outputs places that seem to have superclass cycles
OUTPUT_SUPER_CYCLES := false;
PAIR_OUTPUT_ENABLED: bool = true; # output method pairs at all?
PAIR_OUTPUT_FRACTION: int = 100; # output 1/fraction of the method pairs
INVALID_STR: string = "!INVALID!";
UNKNOWN_TYPE_STR: string = "!UNKNOWN!";
HAS_DUPES_STR: string = "!DUPLICATED!";
MDX_NAME: int = 0;
MDX_ARGTYPESTR: int = 1;
MDX_PRIMARY_MODIFIER: int = 2;
MDX_THROWS: int = 3;
MDX_THROWSIG: int = 4;
MDX_SYNC: int = 5;
MDX_SYNCKIND: int = 6;
MDX_IO_EFFECT: int = 7;
MDX_IOKIND: int = 8;
MDX_METHOD_CALLS: int = 9;
MOD_ABSTRACT: string = "A";
MOD_PRIVATE: string = "P";
MOD_STATIC: string = "S";
MOD_CTOR: string = "C";
MOD_OTHER: string = "O";
########################################
### Utility functions ###
########################################
safeSplit := function(str: string, reg: string) : array of string {
temp: array of string;
if (str == "") # empty string, empty list
return new(temp, 0, INVALID_STR);
return splitall(str, reg);
};
mergeStrArraySet :=
function(a1: array of string, a2: array of string): array of string {
strMap: map[string] of bool;
foreach(i: int; def(a1[i])) {
strMap[a1[i]] = true;
}
foreach(i: int; def(a2[i])) {
strMap[a2[i]] = true;
}
return keys(strMap);
};
# assume each array has no duplicates
isEq := function(ar1: array of string, ar2: array of string): bool {
if (len(ar1) != len(ar2)) {
return false;
}
foreach(i: int; def(ar1[i])) {
found: bool = false;
foreach(j: int; def(ar2[j])) {
if (ar1[i] == ar2[j]) {
found = true;
break;
}
}
if (!found) {
return false;
}
}
return true;
};
toList := function(arr: array of string): string {
outStr: string = "";
first: bool = true;
foreach(i: int; def(arr[i])) {
if (first) {
first = false;
outStr = outStr + arr[i];
} else {
outStr = outStr + "," + arr[i];
}
}
if (outStr == "") {
outStr = ",";
}
return outStr;
};
isConstructor := function (method: Method) : bool {
return method.name == "<init>";
};
isStatic := function (method: Method) : bool {
foreach(i: int; def(method.modifiers[i])) {
if (method.modifiers[i].kind == ModifierKind.STATIC) {
return true;
}
}
return false;
};
isAbstract := function(method: Method): bool {
foreach(i: int; def(method.modifiers[i])) {
if (method.modifiers[i].kind == ModifierKind.ABSTRACT) {
return true;
}
}
return false;
};
isPrivate := function(method: Method): bool {
foreach(i: int; def(method.modifiers[i])) {
mod := method.modifiers[i];
if (mod.kind == ModifierKind.VISIBILITY && mod.visibility == Visibility.PRIVATE) {
return true;
}
}
return false;
};
stripToTypeName := function(theType: string) : string {
loc := strrfind(".", theType); # note: the double r is intentional
if (loc != -1) {
return substring(theType, loc + 1); # +1 to ignore the dot
}
return theType;
};
XisSubsetY := function(sub: array of string, super: array of string) : bool {
# todo: replace with contains() if it works on arrays
# assume: super and sub are sets w/ no duplicates
foreach (i: int; def(sub[i])) {
found: bool = false;
foreach(j: int; def(super[j]))
if (sub[i] == super[j])
found = true;
if (!found) return false;
}
return true;
};
fileIsFilteredOut := function(root: ASTRoot) : bool {
found := false;
visit(root, visitor {
before _ -> if (found) stop;
before node: Modifier ->
if (node.kind == ModifierKind.ANNOTATION && node.annotation_name == "Test")
found = true;
});
return found;
};
########################################
### New getsnapshot() ###
########################################
# getsnapshot - medium precision version
# note: does not check AST hashes, and takes ~35mins on big dataset
getsnapshot_mp := function(cr: CodeRepository, t: time)
: array of ChangedFile {
filter := "SOURCE_JAVA_JLS";
snapshot: map[string] of ChangedFile;
blacklist: set of string;
visit(cr, visitor {
before node: Revision -> {
if (node.commit_date > t) stop;
fKeys: map[ChangedFile] of string;
rFinal: map[string] of ChangedFile;
# apply filters and generate keys / hashes
foreach (i:int; def(node.files[i])) {
file := node.files[i];
if (!iskind(filter, file.kind)) continue;
ast: ASTRoot = getast(file);
if (len(ast.namespaces) != 1) continue;
parts := splitall(file.name, "/");
fileName := parts[len(parts) - 1];
fKeys[file] = ast.namespaces[0].name + "." + fileName;
}
# process each file
fList := keys(fKeys);
foreach (i: int; def(fList[i])) {
curr := fList[i];
if (def(rFinal[fKeys[curr]])) {
add(blacklist, fKeys[curr]);
} else {
rFinal[fKeys[curr]] = curr;
}
}
kList := keys(rFinal);
foreach(i: int; def(kList[i])) {
currKey := kList[i];
if (rFinal[currKey].change == ChangeKind.DELETED) {
remove(snapshot, currKey);
} else {
snapshot[currKey] = rFinal[currKey];
}
}
}
});
finalSnap: map[string] of ChangedFile;
finalKeys := keys(snapshot);
foreach (i:int; def(finalKeys[i])) {
k := finalKeys[i];
if (!contains(blacklist, k)) # not blacklisted
finalSnap[k] = snapshot[k];
}
return values(finalSnap);
};
########################################
### Resolution code ###
########################################
resolvOut: output sum[string] of int;
declImp: map[string] of string; # [decl] = {list of imports, # separated}
declPkg: map[string] of string; # [decl] = {package}
declNme: map[string] of string; # [decl] = {decl.namee}
IMPORT_DELIM := "#";
resolve := function(decl: string, ctx: string) : string {
if (!def(declPkg[ctx])) {
resolvOut["BAD_CONTEXT"] << 1;
return INVALID_STR; # no such context
}
# See if it's an inner class
inKey := ctx + "." + decl;
inName := declPkg[inKey];
if (def(inName) && inName != HAS_DUPES_STR) {
resolvOut["INNER_CLASS"] << 1;
return inKey;
}
# See if it's an outer class
oParts := safeSplit(ctx, "\\.");
oPkgParts := safeSplit(declPkg[ctx], "\\.");
oLB := len(oPkgParts); oUB := len(oParts) - 1; # oLB inclusive, oUB exclusive
for (i: int = oLB; i < oUB; i++) {
if (oParts[i] == decl) { # outer class, so try to reconstruct the key
outKey := declPkg[ctx];
for (k: int = oLB; k <= i; k++) {
outKey = outKey + "." + oParts[k];
}
outName := declPkg[outKey];
if (def(outName) && outName != HAS_DUPES_STR) {
resolvOut["OUTER_CLASS"] << 1;
return outKey;
} else {
resolvOut["OUTER_CLASS_FAILED_TO_RESOLVE"] << 1;
return INVALID_STR;
}
}
}
# set up to look at imports
imps := safeSplit(declImp[ctx], IMPORT_DELIM);
parts: array of string; # declaring it here prevents compiler breaking
# Fully qualified imports
foreach(i:int; def(imps[i])) {
if (strfind("*", imps[i]) != -1) continue;
parts = safeSplit(imps[i], "\\.");
if (parts[len(parts) - 1] == decl) {
if (def(declPkg[imps[i]]) && declPkg[imps[i]] != HAS_DUPES_STR) {
resolvOut["NORM_IMPORT"] << 1;
return imps[i];
} else {
resolvOut["NORM_IMPORT_FAILED_TO_RESOLVE"] << 1;
return INVALID_STR;
}
}
}
# Look for matches in the same package
pkgKey := declPkg[ctx] + "." + decl;
pkgName := declPkg[pkgKey];
if (def(pkgName) && pkgName != HAS_DUPES_STR) {
resolvOut["SAME_PACKAGE"] << 1;
return pkgKey;
}
# Finally look at wildcard imports
foreach(i:int; def(imps[i])) {
if (strfind("*", imps[i]) == -1) continue;
# strreplace appears to cause an error in an unknown situation
# working around that here
#newImp := strreplace(imps[i], "*", decl, false);
newImp := "";
parts = safeSplit(imps[i], "\\.");
foreach (x: int; def(parts[x])) {
toAdd := "";
if (parts[x] == "*") toAdd = decl;
else toAdd = parts[x];
if (newImp == "") newImp = toAdd;
else newImp = newImp + "." + toAdd;
}
newImpPkg := declPkg[newImp];
if (def(newImpPkg) && newImpPkg != HAS_DUPES_STR) {
resolvOut["STAR_IMPORT"] << 1;
return newImp;
}
}
resolvOut["NO_RESOLUTION"] << 1;
return INVALID_STR;
};
# returns the declaration key
# outers must be empty or in the format of ".out1.out2"
preprocessDecl := function(decl: Declaration, root: ASTRoot, outers: string)
: string {
if (len(root.namespaces) != 1) {
resolvOut["BAD_NAMESPACE"] << 1;
return INVALID_STR;
}
key: string = root.namespaces[0].name + outers + "." + decl.name;
if (def(declPkg[key])) {
if (declPkg[key] != HAS_DUPES_STR) {
resolvOut["DUPLICATED"] << 2;
declImp[key] = HAS_DUPES_STR;
declPkg[key] = HAS_DUPES_STR;
declNme[key] = HAS_DUPES_STR;
} else {
resolvOut["DUPLICATED"] << 1;
}
return INVALID_STR;
}
imps := "";
foreach(i:int; def(root.imports[i])) {
if (imps == "") imps = root.imports[i];
else imps = imps + IMPORT_DELIM + root.imports[i];
}
declImp[key] = imps;
declPkg[key] = root.namespaces[0].name;
declNme[key] = decl.name;
return key;
};
########################################
### Throw analysis functions ###
########################################
STX_NAME: int = 0;
STX_RETURN: int = 1;
STX_ARGNUM: int = 2;
# takes the exception type and adds it to the typeMap properly
addThrowType := function(typeMap: map[string] of bool, theType: string) {
list: map[string] of bool;
# handle multi types (i.e. "Ex | Ex2 | Ex3") from catch
if (strfind("|", theType) != -1) {
parts := splitall(theType, "\\|");
foreach(i: int; def(parts[i])) {
list[trim(parts[i])] = true;
}
}
else {
list[theType] = true;
}
# handle fully qualified (i.e. "java.lang.Ex" -> "Ex") and add to typeMap
listKeys := keys(list);
foreach(i: int; def(listKeys[i])) {
actual := stripToTypeName(listKeys[i]);
typeMap[actual] = true;
}
};
processThrowCall := function(typeMap: map[string] of bool, e: Expression,
decl: Declaration) {
mName := e.method;
argCount := len(e.method_args);
# case 1: local method
case1Found: bool = false;
localMethodVisitor := visitor {
before node: Method -> {
if (node.name == mName && len(node.arguments) == argCount) {
addThrowType(typeMap, node.return_type.name);
case1Found = true;
}
# don't go into declarations in the methods
stop;
}
};
visit(decl, localMethodVisitor);
if (case1Found) return;
# case 2: static method
# e.expression[0] exists = possible static method call
if (len(e.expressions) == 1
&& e.expressions[0].kind == ExpressionKind.VARACCESS) {
dName := e.expressions[0].variable;
if (def(statics[dName]) && statics[dName] != INVALID_STR) {
dParts := splitall(statics[dName], "#");
foreach (i: int; def(dParts[i])) {
sParts := splitall(dParts[i], ":");
if (sParts[STX_NAME] == mName
&& int(sParts[STX_ARGNUM]) == argCount) {
addThrowType(typeMap, sParts[STX_RETURN]);
return;
}
}
}
}
# case 3: dunno (hopefully not very common)
typeMap[UNKNOWN_TYPE_STR] = true;
};
isBranch := function(kind: StatementKind): bool {
if (kind == StatementKind.IF
|| kind == StatementKind.SWITCH
|| kind == StatementKind.TRY) {
return true;
}
return false;
};
# Note: Does not work well with nested catches. The assumption is that most
# methods won't do something like that.
getThrows := function(method: Method, decl: Declaration): array of string {
hasBranches: bool = false;
typeMap: map[string] of bool;
localMap: map[string] of string; #[name] = type
throwVarNames: map[string] of bool;
inCatch: bool = false;
catchType: string = INVALID_STR;
catchName: string = INVALID_STR;
methodVisitor := visitor {
before node: Statement -> {
if (node.kind == StatementKind.THROW) {
e: Expression = node.expression;
if (e.kind == ExpressionKind.NEW) {
addThrowType(typeMap, e.new_type.name);
} else if (e.kind == ExpressionKind.VARACCESS) {
if (inCatch && e.variable == catchName) {
addThrowType(typeMap, catchType);
} else {
# store for later
throwVarNames[e.variable] = true;
}
} else if (e.kind == ExpressionKind.METHODCALL) {
processThrowCall(typeMap, e, decl);
} else {
typeMap[UNKNOWN_TYPE_STR] = true;
}
} else if (node.kind == StatementKind.CATCH) { # enter catch block
inCatch = true;
catchVar: Variable = node.variable_declaration;
catchType = catchVar.variable_type.name;
catchName = catchVar.name;
} else if (isBranch(node.kind)) {
hasBranches = true;
}
}
after node: Statement -> {
# exit catch block
if (node.kind == StatementKind.CATCH) {
catchType = INVALID_STR;
catchName = INVALID_STR;
inCatch = false;
}
}
before node: Variable -> {
typeName: string = node.variable_type.name;
if (def(localMap[node.name]) && localMap[node.name] != typeName) {
localMap[node.name] = INVALID_STR;
} else {
localMap[node.name] = typeName;
}
}
before node: Declaration -> {
# stay at this one method's statements
stop;
}
};
visit(method, methodVisitor);
# let's see if there's any other VARACCESS throws we can deal with
varNameArray: array of string = keys(throwVarNames);
countAdded: int = 0;
foreach(i: int; def(varNameArray[i])) {
current: string = varNameArray[i];
if (def(localMap[current]) && localMap[current] != INVALID_STR) {
addThrowType(typeMap, localMap[current]);
countAdded++;
}
}
# not all "throw VARACCESS" are accounted for
if (countAdded != len(varNameArray)) {
typeMap[UNKNOWN_TYPE_STR] = true;
}
if (IGNORE_NONBRANCHING_EXS && !hasBranches) {
clear(typeMap);
}
return keys(typeMap);
};
processStaticMethod := function (method: Method, decl: Declaration) {
if (!isStatic(method)) {
return;
}
finalStr: string = method.name;
# return type
finalStr = format("%s:%s", finalStr, method.return_type.name);
# number of arguments
finalStr = format("%s:%d", finalStr, len(method.arguments));
if (statics[decl.name] == "") {
statics[decl.name] = finalStr;
} else {
statics[decl.name] = format("%s#%s", statics[decl.name], finalStr);
}
};
processDeclStatics := function(decl: Declaration) {
# hard stop if we have multiple declarations of the same class name
if (def(statics[decl.name])) {
statics[decl.name] = HAS_DUPES_STR;
return;
}
# process static methods
statics[decl.name] = "";
foreach(i: int; def(decl.methods[i])) {
processStaticMethod(decl.methods[i], decl);
}
};
staticMethodVisitor := visitor {
before decl: Declaration -> {
if (decl.kind == TypeKind.CLASS) {
processDeclStatics(decl);
}
}
before node: Method -> {
# don't look at declarations in a method
stop;
}
};
########################################
### Synchronization functions ###
########################################
SYNC_ACQUIRE: string = "!ACQUIRE";
SYNC_RELEASE: string = "!RELEASE";
SYNC_BOTH : string = "!BOTH";
SYNC_NONE : string = "!NONE";
SYNC_KIND_LOCK : string = "!LOCK";
SYNC_KIND_BLOCK : string = "!BLOCK";
SYNC_KIND_MODIFIER: string = "!MODIFIER";
SYNC_HAS_LOCK_OBJ: int = 0;
SYNC_HAS_SYNC_BLOCK: int = 1;
lock_get: map[string] of string;
lock_acquire: map[string] of string;
lock_release: map[string] of string;
debugSyncEffect: output sum[string] of int;
########################################
lock_get["ReentrantReadWriteLock"] = "readLock#writeLock";
########################################
lock_acquire["Lock"] = "lock#lockInterruptibly#tryLock";
lock_acquire["ReentrantLock"] = "lock#lockInterruptibly#tryLock";
lock_acquire["ReadLock"] = "lock#lockInterruptibly#tryLock";
lock_acquire["WriteLock"] = "lock#lockInterruptibly#tryLock";
lock_acquire["Semaphore"] = "acquire#acquireUninterruptibly#tryAcquire";
########################################
lock_release["Lock"] = "unlock";
lock_release["ReadLock"] = "unlock";
lock_release["WriteLock"] = "unlock";
lock_release["ReentrantLock"] = "unlock";
lock_release["Semaphore"] = "release";
########################################
lock_isInList := function (target: string, list: string): bool {
arr := safeSplit(list, "#");
foreach(i: int; def(arr[i])) {
if (arr[i] == target) return true;
}
return false;
};
lock_getActualEffect := function(varType: string, method: string) : string {
list: string = INVALID_STR;
if (def(lock_acquire[varType])) {
list = lock_acquire[varType];
if (lock_isInList(method, list)) return SYNC_ACQUIRE;
}
if (def(lock_release[varType])) {
list = lock_release[varType];
if (lock_isInList(method, list)) return SYNC_RELEASE;
}
return SYNC_NONE;
};
lock_getTypeFromVARACCESS := function(source: Expression,
declVars: map[string] of string,
methodVars: map[string] of string) : string
{
isThis: bool = false;
if (len(source.expressions) == 1) {
meta := source.expressions[0];
if (meta.kind == ExpressionKind.LITERAL
&& meta.literal == "this") isThis = true;
else if (meta.kind == ExpressionKind.LITERAL ||
meta.kind == ExpressionKind.VARACCESS ||
meta.kind == ExpressionKind.METHODCALL)
{
return INVALID_STR; # don't know this source of our expression
}
}
# full code string is the following expression:
# (isThis ? "this." : "") + source.variable + "." + node.method
varType: string = INVALID_STR;
if (isThis) {
if (def(declVars[source.variable])) {
varType = declVars[source.variable];
}
} else if (def(methodVars[source.variable])){
varType = methodVars[source.variable];
} else if (def(declVars[source.variable])) {
varType = declVars[source.variable];
}
return varType;
};
lock_processExp := function(node: Expression,
declVars: map[string] of string,
methodVars: map[string] of string) : string
{
source: Expression = node.expressions[0];
varType: string = INVALID_STR;
if (source.kind == ExpressionKind.VARACCESS) {
varType = lock_getTypeFromVARACCESS(source, declVars, methodVars);
if (varType == INVALID_STR)
return SYNC_NONE;
else {
debugSyncEffect["SYNC_LOCK_VARACCESS"] << 1;
return lock_getActualEffect(varType, node.method);
}
} else if (source.kind == ExpressionKind.METHODCALL && len(source.expressions) == 1) {
# Maybe a ReentrantReadWriteLock
sourceSource: Expression = node.expressions[0];
if (sourceSource.kind == ExpressionKind.VARACCESS) {
varType = lock_getTypeFromVARACCESS(sourceSource, declVars, methodVars);
if (def(lock_get[varType]) && lock_isInList(source.method, lock_get[varType])) {
# Assume 'Lock' interface here
debugSyncEffect["SYNC_LOCK_METHODCALL"] << 1;
return lock_getActualEffect("Lock", node.method);
}
}
}
return SYNC_NONE;
};
getSynchronizationType := function(method: Method,
decl: Declaration,
lockType: array of bool) : string
{
hasAcquire: bool = false;
hasRelease: bool = false;
lockType[SYNC_HAS_LOCK_OBJ] = false; # this returns the value to the callee
lockType[SYNC_HAS_SYNC_BLOCK] = false;
declVars: map[string] of string; # [name] = type
methodVars: map[string] of string; # [name] = type;
foreach(i: int; def(decl.fields[i])) {
dVar: Variable = decl.fields[i];
declVars[dVar.name] = stripToTypeName(dVar.variable_type.name);
}
foreach(i:int; def(method.modifiers[i]))
if (method.modifiers[i].kind == ModifierKind.SYNCHRONIZED) {
hasAcquire = true;
hasRelease = true;
}
visit(method, visitor {
before node: Declaration -> stop;
before node: Statement ->
if (node.kind == StatementKind.SYNCHRONIZED) {
hasAcquire = true;
hasRelease = true;
lockType[SYNC_HAS_SYNC_BLOCK] = true;
}
before node: Expression -> {
if (node.kind == ExpressionKind.METHODCALL && len(node.expressions) == 1) {
result := lock_processExp(node, declVars, methodVars);
if (result == SYNC_ACQUIRE) {
hasAcquire = true;
lockType[SYNC_HAS_LOCK_OBJ] = true;
debugSyncEffect["SYNC_SINGLE_ACQUIRE"] << 1;
} else if (result == SYNC_RELEASE) {
hasRelease = true;
lockType[SYNC_HAS_LOCK_OBJ] = true;
debugSyncEffect["SYNC_SINGLE_RELEASE"] << 1;
}
}
else if (node.kind == ExpressionKind.VARDECL) {
foreach(i:int; def(node.variable_decls[i])) {
lvar: Variable = node.variable_decls[i];
methodVars[lvar.name] = stripToTypeName(lvar.variable_type.name);
}
}
}
});
if (hasAcquire && hasRelease) return SYNC_BOTH;
else if (hasAcquire) return SYNC_ACQUIRE;
else if (hasRelease) return SYNC_RELEASE;
return SYNC_NONE;
};
########################################
### I/O call analysis functions ###
########################################
IO_IN := "IN";
IO_OUT := "OUT";
IO_BOTH := "BOTH";
IO_NONE := "NONE";
IO_KIND_CONSOLE: string = "!CONSOLE";
IO_KIND_FILE : string = "!FILE";
IO_KIND_BUS : string = "!BUS";
IO_HAS_CONSOLE: int = 0;
IO_HAS_FILE: int = 1;
IO_HAS_BUS: int = 2;
# diagnostics / stats that cover all methods not just method pairs
ioOut: output sum[string] of int;
ioInput: output sum[string] of int;
ioOutput: output sum[string] of int;
i_map: map[string] of string;
o_map: map[string] of string;
i_map_static: map[string] of string;
io_kind_map: map[string] of string;
####################
i_map["StreamTokenizer"] = "commentChar#eolIsSignificant#lineno#lowerCaseMode#nextToken#ordinaryChar#ordinaryChars#parseNumbers#pushBack#quoteChar#resetSyntax#slashSlashComments#slashStarComments#toString#whitespaceChars#wordChars";
i_map["PipedReader"] = "read#reset#skip";
i_map["Console"] = "readLine#readPassword";
i_map["ObjectInputStream"] = "defaultReadObject#read#readBoolean#readByte#readChar#readClassDescriptor#readDouble#readFields#readFloat#readFully#readInt#readLine#readLong#readObject#readObjectOverride#readShort#readStreamHeader#readUnshared#readUnsignedByte#readUnsignedShort#readUTF#registerValidation#resolveClass#resolveObject#resolveProxyClass#skipBytes#reset#skip";
i_map["PipedInputStream"] = "read#receive#reset#skip";
i_map["StringReader"] = "read#reset#skip";
i_map["InputStream"] = "read#reset#skip";
i_map["LineNumberInputStream"] = "getLineNumber#read#reset#skip";
i_map["Reader"] = "read#reset#skip";
i_map["FileInputStream"] = "read#reset#skip";
i_map["FilterReader"] = "read#reset#skip";
i_map["BufferedInputStream"] = "read#reset#skip";
i_map["PushbackInputStream"] = "read#reset#skip#unread";
i_map["DataInput"] = "readBoolean#readByte#readChar#readDouble#readFloat#readFully#readInt#readLine#readLong#readShort#readUnsignedByte#readUnsignedShort#readUTF#skipBytes";
i_map["CharArrayReader"] = "read#reset#skip";
i_map["InputStreamReader"] = "read#reset#skip";
i_map["Externalizable"] = "readExternal";
i_map["ByteArrayInputStream"] = "read#reset#skip";
i_map["DataInputStream"] = "read#readBoolean#readByte#readChar#readDouble#readFloat#readFully#readInt#readLine#readLong#readShort#readUnsignedByte#readUnsignedShort#readUTF#skipBytes#reset#skip";
i_map["StringBufferInputStream"] = "read#reset#skip";
i_map["SequenceInputStream"] = "read#reset#skip";
i_map["PushbackReader"] = "read#reset#skip#unread";
i_map["Scanner"] = "findInLine#findWithinHorizon#match#next#nextBigDecimal#nextBigInteger#nextBoolean#nextByte#nextDouble#nextFloat#nextInt#nextLine#nextLong#nextShort#remove#reset#skip";
i_map["LineNumberReader"] = "getLineNumber#read#reset#skip";
i_map["FileReader"] = "read#reset#skip";
i_map["RandomAccessFile"] = "close#getChannel#getFD#getFilePointer#length#read#readBoolean#readByte#readChar#readDouble#readFloat#readFully#readInt#readLine#readLong#readShort#readUnsignedByte#readUnsignedShort#readUTF#seek#skipBytes";
i_map["BufferedReader"] = "read#readLine#reset#skip";
i_map["FilterInputStream"] = "read#reset#skip";
i_map["ObjectInput"] = "read#readObject#readBoolean#readByte#readChar#readDouble#readFloat#readFully#readInt#readLine#readLong#readShort#readUnsignedByte#readUnsignedShort#readUTF#skipBytes#reset#skip";
####################
o_map["FilterWriter"] = "flush#write#append";
o_map["Console"] = "flush#format#printf";
o_map["CharArrayWriter"] = "append#flush#reset#write#writeTo";
o_map["Flushable"] = "flush";
o_map["Writer"] = "append#flush#write";
o_map["PrintWriter"] = "append#checkError#clearError#close#flush#format#print#printf#println#setError#write";
o_map["PipedOutputStream"] = "flush#write";
o_map["ObjectOutputStream"] = "annotateClass#annotateProxyClass#close#defaultWriteObject#drain#enableReplaceObject#flush#putFields#replaceObject#reset#useProtocolVersion#write#writeBoolean#writeByte#writeBytes#writeChar#writeChars#writeClassDescriptor#writeDouble#writeFields#writeFloat#writeInt#writeLong#writeObject#writeObjectOverride#writeShort#writeStreamHeader#writeUnshared#writeUTF";
o_map["PrintStream"] = "append#checkError#clearError#close#flush#format#print#printf#println#setError#write";
o_map["BufferedWriter"] = "flush#newLine#write#append";
o_map["FileOutputStream"] = "flush#write";
o_map["BufferedOutputStream"] = "flush#write";
o_map["DataOutputStream"] = "flush#write#writeBoolean#writeByte#writeBytes#writeChar#writeChars#writeDouble#writeFloat#writeInt#writeLong#writeShort#writeUTF";
o_map["OutputStream"] = "flush#write";
o_map["Externalizable"] = "writeExternal";
o_map["FileSystem"] = "delete#rename";
o_map["StringWriter"] = "append#flush#write";
o_map["ObjectOutput"] = "flush#write#writeObject#writeBoolean#writeByte#writeBytes#writeChar#writeChars#writeDouble#writeFloat#writeInt#writeLong#writeShort#writeUTF";
o_map["ByteArrayOutputStream"] = "reset#write#writeTo#flush";
o_map["OutputStreamWriter"] = "flush#write#append";
o_map["DataOutput"] = "write#writeBoolean#writeByte#writeBytes#writeChar#writeChars#writeDouble#writeFloat#writeInt#writeLong#writeShort#writeUTF";
o_map["RandomAccessFile"] = "setLength#write#writeBoolean#writeByte#writeBytes#writeChar#writeChars#writeDouble#writeFloat#writeInt#writeLong#writeShort#writeUTF";
o_map["File"] = "createNewFile#delete#deleteOnExit#mkdir#mkdirs";
o_map["FileWriter"] = "flush#write#append";
o_map["FilterOutputStream"] = "flush#write";
o_map["PipedWriter"] = "flush#write#append";
####################
i_map_static["File"] = "createTempFile";
####################
io_kind_map["File"] = "FileInputStream#FileReader#RandomAccessFile#FileOutputStreamFileSystem#File#FileWriter";
io_kind_map["Console"] = "System.in#System.out#System.err#Console";
# Everything else has kind "Bus"
####################
io_isInList := function (target: string, list: string): bool {
arr := safeSplit(list, "#");
foreach(i: int; def(arr[i])) {
if (arr[i] == target) return true;
}
return false;
};
io_getActualEffect := function(varType: string, methodName: string): string {
list: string = INVALID_STR;
if (def(i_map_static[varType])) {
list = i_map_static[varType];
if (io_isInList(methodName, list)) return IO_IN;
}
if (def(i_map[varType])) {
list = i_map[varType];
if (io_isInList(methodName, list)) return IO_IN;
}
if (def(o_map[varType])) {
list = o_map[varType];
if (io_isInList(methodName, list)) return IO_OUT;
}
return IO_NONE;
};
io_getTypeFromVARACCESS := function(source: Expression,
declVars: map[string] of string,
methodVars: map[string] of string,
reflectionType: array of string) : string
{
isThis: bool = false;
if (len(source.expressions) == 1) {
meta := source.expressions[0];
if (meta.kind == ExpressionKind.LITERAL
&& meta.literal == "this") isThis = true;
else if (meta.kind == ExpressionKind.LITERAL ||
meta.kind == ExpressionKind.VARACCESS ||
meta.kind == ExpressionKind.METHODCALL)
{
return INVALID_STR; # don't know this source of our expression
}
}
# full code string is the following expression:
# (isThis ? "this." : "") + source.variable + "." + node.method
reflectionType[0] = INVALID_STR;
varType: string = INVALID_STR;
if (isThis) {
if (def(declVars[source.variable])) {
varType = declVars[source.variable];
ioOut["THIS"] << 1;
}
} else if (source.variable == "System.out" || source.variable == "System.err") {
varType = "PrintWriter";
reflectionType[0] = source.variable; # say it's System.*
ioOut["SYSTEM"] << 1;
} else if (source.variable == "System.in") {
varType = "InputStream";
reflectionType[0] = source.variable; # say it's System.*
ioOut["SYSTEM"] << 1;
} else if (def(methodVars[source.variable])){
varType = methodVars[source.variable];
ioOut["METHOD_VAR"] << 1;
} else if (def(declVars[source.variable])) {
varType = declVars[source.variable];
ioOut["DECL_VAR"] << 1;
}
if (reflectionType[0] == INVALID_STR) {
reflectionType[0] = varType;
}
return varType;
};
getEffectIO := function(method: Method, decl: Declaration, ioKind: array of bool): string {
hasWriteIO: bool = false;
hasReadIO: bool = false;
ioKind[IO_HAS_CONSOLE] = false;
ioKind[IO_HAS_FILE] = false;
ioKind[IO_HAS_BUS] = false;
# map[variable name] = variable type
declVars: map[string] of string;
methodVars: map[string] of string;
# map[type name] = true
ioReadEffects: map[string] of bool;
ioWriteEffects: map[string] of bool;
# have to declare this here or compiler fails
var: Variable;
foreach(i:int; def(decl.fields[i])) {
var = decl.fields[i];
declVars[var.name] = var.variable_type.name;
}
foreach(i:int; def(method.arguments[i])) {
var = method.arguments[i];
methodVars[var.name] = var.variable_type.name;
}
visit(method, visitor {
before node: Expression -> {
if (node.kind == ExpressionKind.METHODCALL && len(node.expressions) == 1) {
source: Expression = node.expressions[0];
if (source.kind == ExpressionKind.VARACCESS) {
reflectionType: array of string;
reflectionType = new(reflectionType, 1, INVALID_STR);
varType: string = io_getTypeFromVARACCESS(source, declVars, methodVars, reflectionType);
# now check figure out what the actual effect is
if (varType != INVALID_STR) {
effect: string = io_getActualEffect(varType, node.method);
if (effect == IO_OUT) {
hasWriteIO = true;
ioWriteEffects[reflectionType[0]] = true;
} else if (effect == IO_IN) {
hasReadIO = true;
ioReadEffects[reflectionType[0]] = true;
}
}
}
} else if (node.kind == ExpressionKind.VARDECL) {
foreach(i:int; def(node.variable_decls[i])) {
var = node.variable_decls[i];
methodVars[var.name] = var.variable_type.name;
}
}
}
before node: Declaration -> stop;
});
# output input / output effects for aggregate stats
ioReadList := keys(ioReadEffects);
foreach (i: int; def(ioReadList[i])) {
ioInput[ioReadList[i]] << 1;
if (io_isInList(ioReadList[i], io_kind_map["Console"]))
ioKind[IO_HAS_CONSOLE] = true;
else if (io_isInList(ioReadList[i], io_kind_map["File"]))
ioKind[IO_HAS_FILE] = true;
else
ioKind[IO_HAS_BUS] = true;
}
ioWriteList := keys(ioWriteEffects);
foreach (i: int; def(ioWriteList[i])) {
ioOutput[ioWriteList[i]] << 1;
if (io_isInList(ioWriteList[i], io_kind_map["Console"]))
ioKind[IO_HAS_CONSOLE] = true;
else if (io_isInList(ioWriteList[i], io_kind_map["File"]))
ioKind[IO_HAS_FILE] = true;
else
ioKind[IO_HAS_BUS] = true;
}
if (hasWriteIO && hasReadIO) return IO_BOTH;
else if (hasWriteIO) return IO_OUT;
else if (hasReadIO) return IO_IN;
return IO_NONE;
};
########################################
### Method call analysis functions ###
########################################
MC_PARAM: string = "P"; # obj.m(); -> m; including exps such as ((Obj)o[0]).x();
MC_THIS: string = "T"; # this.m(); -> m
MC_SUPER: string = "S"; # super.m(); -> m
MC_DELIM: string = "!";
methodCallDebug: output sum[string] of int;
getCallEffectPrefix := function(expr: Expression): string {
if (len(expr.expressions) == 1) {
source := expr.expressions[0];
if (source.kind == ExpressionKind.LITERAL) {
if (source.literal == "this") return MC_THIS;
else if (source.literal == "super") return MC_SUPER; # Boa doesn't see super as literal
} else if (source.kind == ExpressionKind.VARACCESS) {
return MC_PARAM;
} else if (source.kind == ExpressionKind.METHODCALL) {
return MC_PARAM;
} else {
methodCallDebug["OTHER_KIND=" + format("%s", source.kind)] << 1;
return MC_PARAM;
}
} else { # length is 0
if (strfind("super.", expr.method) == 0) {
return MC_SUPER;
} else {
return MC_THIS;
}
}
methodCallDebug["MULTIPLE_SOURCE_EXPRS"] << 1;
return MC_PARAM;
};
getEffectMethodCall := function(method: Method, decl: Declaration): string {
eList: map[string] of bool;
visit(method, visitor {
before node: Declaration -> stop;
before node: Expression -> {
if (node.kind == ExpressionKind.METHODCALL) {
result := getCallEffectPrefix(node);
if (result != INVALID_STR) {
methodCallDebug["METHOD_MC_TYPE=" + result] << 1;
eList[result + MC_DELIM + node.method] = true;
} else {
methodCallDebug["METHOD_MC_TYPE_INVALID"] << 1;
}
}
}
});
final: string = "";
finalList := keys(eList);
foreach(i: int; def(finalList[i])) {
if (i == 0) {
final = finalList[i];
} else {
final = format("%s,%s", final, finalList[i]);
}
}
if (final == "") {
final = ","; # empty list
}
return final;
};
########################################
### Effect analysis functions ###
########################################
processOneMethod := function(method: Method, decl: Declaration, key: string) {
finalStr: string = method.name;
# argument types
argStr: string = "";
foreach(i: int; def(method.arguments[i])) {
tName: string = method.arguments[i].variable_type.name;
if (argStr == "") {
argStr = tName;
} else {
argStr = format("%s,%s", argStr, tName);
}
}
if (argStr == "")
argStr = ",";
finalStr = format("%s:%s", finalStr, argStr);
# add the primary access modifier with the following precedence
accessModifier: string = MOD_OTHER;
if (isAbstract(method)) {
accessModifier = MOD_ABSTRACT;
} else if (isPrivate(method)) {
accessModifier = MOD_PRIVATE;
} else if (isStatic(method)) {
accessModifier = MOD_STATIC;
} else if (isConstructor(method)) {
accessModifier = MOD_CTOR;
}
finalStr = format("%s:%s", finalStr, accessModifier);
#### THROWS EFFECT ####
# note method throws
throwsStr: string = "";
throws: array of string = getThrows(method, decl);
foreach(i: int; def(throws[i])) {
if (throwsStr == "") {
throwsStr = throws[i];
} else {
throwsStr = format("%s,%s", throwsStr, throws[i]);
}
}
if (throwsStr == "")
throwsStr = ",";
finalStr = format("%s:%s", finalStr, throwsStr);
# add signature throws (i.e. everything in "throws Ex1, Ex2")
sigThrowsStr: string = "";
foreach(i: int; def(method.exception_types[i])) {
stName: string = method.exception_types[i].name;
stName = stripToTypeName(stName);
if (sigThrowsStr == "")
sigThrowsStr = stName;
else
sigThrowsStr = format("%s,%s", sigThrowsStr, stName);
}
if (sigThrowsStr == "")
sigThrowsStr = ",";
finalStr = format("%s:%s", finalStr, sigThrowsStr);
#### SYNC EFFECT ####
# note synchronization type
lockType: array of bool;
lockType = new(lockType, 2, false);
syncType: string = getSynchronizationType(method, decl, lockType);
finalStr = finalStr + ":" + syncType;
# has lock object, block, or modifier
if (lockType[SYNC_HAS_LOCK_OBJ]) {
finalStr = format("%s:%s", finalStr, SYNC_KIND_LOCK);
} else if (lockType[SYNC_HAS_SYNC_BLOCK]) {
finalStr = format("%s:%s", finalStr, SYNC_KIND_BLOCK);
} else {
finalStr = format("%s:%s", finalStr, SYNC_KIND_MODIFIER);
}
#### I/O EFFECT ####
# io effect
ioKind: array of bool;
ioKind = new(ioKind, 3, false);
ioEffect: string = getEffectIO(method, decl, ioKind);
finalStr = format("%s:%s", finalStr, ioEffect);
# io kind
if (ioKind[IO_HAS_CONSOLE])
finalStr = format("%s:%s", finalStr, IO_KIND_CONSOLE);
else if (ioKind[IO_HAS_FILE])
finalStr = format("%s:%s", finalStr, IO_KIND_FILE);
else
finalStr = format("%s:%s", finalStr, IO_KIND_BUS);
#### METHOD CALL EFFECT ####
methodCallEffect: string = getEffectMethodCall(method, decl);
finalStr = format("%s:%s", finalStr, methodCallEffect);
# add the method for later processing after intra-project deduplication
if (effects[key] == "") {
effects[key] = finalStr;
} else {
effects[key] = format("%s#%s", effects[key], finalStr);
}
};
processDecl := function(decl: Declaration, key: string) {
# cache superclass if any
supers[key] = INVALID_STR;
foreach(i: int; def(decl.parents[i])) {
if (decl.parents[i].kind == TypeKind.CLASS) {
supers[key] = decl.parents[i].name;
break;
}
}
# process the methods
effects[key] = "";
foreach(i: int; def(decl.methods[i])) {
processOneMethod(decl.methods[i], decl, key);
}
};
# returns the overridden method info string if and only if it
# 1. exists
# 2. is not abstract, private, static, nor a constructor
# otherwise returns INVALID_STR
getOverridden := function(method: array of string, decl: string): string {
argTypes: string = method[MDX_ARGTYPESTR];
currDeclKey: string = resolve(supers[decl], decl);
prevSeen: set of string;
add(prevSeen, decl);
while (currDeclKey != INVALID_STR
&& !contains(prevSeen, currDeclKey)) {
add(prevSeen, currDeclKey);
if (effects[currDeclKey] == "") {
# no methods to examine, go to next
currDeclKey = resolve(supers[currDeclKey], currDeclKey);
continue;
}
# for all methods
methodList: array of string = splitall(effects[currDeclKey], "#");
foreach(i: int; def(methodList[i])) {
tempDat: array of string = splitall(methodList[i], ":");
tempMethodName: string = tempDat[MDX_NAME];
tempArgTypes: string = tempDat[MDX_ARGTYPESTR];
tempIsValidForPair: bool = tempDat[MDX_PRIMARY_MODIFIER] == MOD_OTHER;
# if method name and arguments match then return
if (tempMethodName == method[MDX_NAME] && tempArgTypes == argTypes) {
# overrides an abstract or similar method, so return no available overridden impl
if (!tempIsValidForPair) {
return INVALID_STR;
} else {
return methodList[i];
}
}
}
# no matching method, go to next
currDeclKey = resolve(supers[currDeclKey], currDeclKey);
}
if (OUTPUT_SUPER_CYCLES &&
currDeclKey != INVALID_STR && contains(prevSeen, currDeclKey)) {
out << "ERROR: Superclass cycle " + p.name + "#" + method[MDX_NAME]
+ "#" + decl + "#" + currDeclKey;
}
return INVALID_STR;
};
getThrowScore := function(info: array of string, superInfo: array of string) : int {
score : int = 0;
subThrows: array of string;
sprThrows: array of string;
if (info[MDX_THROWS] == ",") {
subThrows = new(subThrows, 0, "");
} else {
subThrows = splitall(info[MDX_THROWS], ",");
}
if (superInfo[MDX_THROWS] == ",") {
sprThrows = new(sprThrows, 0, "");
} else {
sprThrows = splitall(superInfo[MDX_THROWS], ",");
}
if (isEq(subThrows, sprThrows)) score = 0; # same
else if (len(subThrows) > len(sprThrows)) score = 1; # subhasmore
else if (len(subThrows) < len(sprThrows)) score = 2; # superhasmore
else score = 3; # same number different exceptions
return score;
};
getSyncScore := function(info: array of string, superInfo: array of string) : int {
score : int = 0;
superEffectLen: int = 0;
infoEffectLen: int = 0;
if (superInfo[MDX_SYNC] == SYNC_NONE) superEffectLen = 0;
else if (superInfo[MDX_SYNC] == SYNC_BOTH) superEffectLen = 2;
else superEffectLen = 1;
if (info[MDX_SYNC] == SYNC_NONE) infoEffectLen = 0;
else if (info[MDX_SYNC] == SYNC_BOTH) infoEffectLen = 2;
else infoEffectLen = 1;
if (info[MDX_SYNC] == superInfo[MDX_SYNC]) score = 0; # same
else if (infoEffectLen > superEffectLen) score = 1; # subhasmore
else if (infoEffectLen < superEffectLen) score = 2; # superhasmore
else score = 3; # one has acquire and the other release
return score;
};
getIOScore := function(info: array of string, superInfo: array of string) : int {
score : int = 0;
superEffectLen: int = 0;
infoEffectLen: int = 0;
if (superInfo[MDX_IO_EFFECT] == IO_NONE) superEffectLen = 0;
else if (superInfo[MDX_IO_EFFECT] == IO_BOTH) superEffectLen = 2;
else superEffectLen = 1;
if (info[MDX_IO_EFFECT] == IO_NONE) infoEffectLen = 0;
else if (info[MDX_IO_EFFECT] == IO_BOTH) infoEffectLen = 2;
else infoEffectLen = 1;
if (info[MDX_IO_EFFECT] == superInfo[MDX_IO_EFFECT]) score = 0; # same
else if (infoEffectLen > superEffectLen) score = 1; # subhasmore
else if (infoEffectLen < superEffectLen) score = 2; # superhasmore
else score = 3; # one has WRITE and the other has READ
return score;
};
getCallScore := function(info: array of string, superInfo: array of string) : int {
score : int = 0;
infoEffect: string = info[MDX_METHOD_CALLS];
superEffect: string = superInfo[MDX_METHOD_CALLS];
infoEffectArr: array of string;
if (infoEffect == ",") infoEffectArr = new(infoEffectArr, 0, "");
else infoEffectArr = safeSplit(infoEffect, ",");
superEffectArr: array of string;
if (superEffect == ",") superEffectArr = new(superEffectArr, 0, "");
else superEffectArr = safeSplit(superEffect, ",");
if (isEq(infoEffectArr, superEffectArr)) score = 0; # same
else if (len(infoEffectArr) > len(superEffectArr)) score = 1; # subhasmore
else if (len(infoEffectArr) < len(superEffectArr)) score = 2; # superhasmore
else score = 3; # same number, different methods
return score;
};
getOverallScore := function(exception: int, sync: int, io: int, call: int): int {
# subhasmore = at least one is subhasmore and the rest are more or equal to super
score: int = 0;
if (exception > 3 || sync > 3 || io > 3 || call > 3 ||
exception < 0 || sync < 0 || io < 0 || call < 0) {
score = -1; # bad parameters
}
else if (exception == sync && exception == io && exception == call) {
score = 0; # same
}
else if (
(exception == 1 || sync == 1 || io == 1 || call == 1) &&
(exception != 2 && sync != 2 && io != 2 && call != 2)
) {
score = 1; # subhasmore
}
else if (
(exception == 2 || sync == 2 || io == 2 || call == 2) &&
(exception != 1 && sync != 1 && io != 1 && call != 1)
) {
score = 2; # superhasmore
} else {
score = 3; # OTHER
}
return score;
};
doSubHasMoreStatOutput := function(info: array of string, superInfo: array of string) {
# the idea here is to form a 4 width string, each char is 1 or 0
# 1 if the pair has some effect, 0 if it doesn't
# in the order of exception, sync, io, and call
# and output this to stat
result: string = "";
if (info[MDX_THROWS] == "," && superInfo[MDX_THROWS] == ",")
result = result + "0";
else
result = result + "1";
if (info[MDX_SYNC] == SYNC_NONE && superInfo[MDX_SYNC] == SYNC_NONE)
result = result + "0";
else
result = result + "1";
if (info[MDX_IO_EFFECT] == IO_NONE && superInfo[MDX_IO_EFFECT] == IO_NONE)
result = result + "0";
else
result = result + "1";
if (info[MDX_METHOD_CALLS] == "," && superInfo[MDX_METHOD_CALLS] == ",")
result = result + "0";
else
result = result + "1";
stat["SUB_HAS_MORE_CLASS=" + result] << 1;
};
pairHasAnEffect := function(info: array of string, superInfo: array of string) : bool {
if (
(info[MDX_THROWS] == "," && superInfo[MDX_THROWS] == ",") &&
(info[MDX_SYNC] == SYNC_NONE && superInfo[MDX_SYNC] == SYNC_NONE) &&
(info[MDX_IO_EFFECT] == IO_NONE && superInfo[MDX_IO_EFFECT] == IO_NONE) &&
(info[MDX_METHOD_CALLS] == "," && superInfo[MDX_METHOD_CALLS] == ",")
) {
return false;
}
return true;
};
# matches the given method data with the method it overrides (if any) and then
# outputs information on this pair in a single output line
outputMethodResults := function(decl: string, mInfo: array of string) {
# method is abstract, static, ctor, or private then skip it
if (mInfo[MDX_PRIMARY_MODIFIER] != MOD_OTHER) {
return;
}
superInfoFull: string = getOverridden(mInfo, decl);
superInfo: array of string = splitall(superInfoFull, ":");
# no valid supermethod
if (superInfoFull == INVALID_STR) {
return;
}
stat["METHOD_PAIR_COUNT"] << 1;
# valid pair with no effect
if (!pairHasAnEffect(mInfo, superInfo)) {
return;
}
stat["METHOD_PAIR_WITH_EFFECT_COUNTER"] << 1;
# The "score" is how the effects differ.
# 0 if the effects are the same
# 1 if subhasmore
# 2 if superhasmore
# 3 if same number, but different effects
throwScore: int = getThrowScore(mInfo, superInfo);
syncScore : int = getSyncScore (mInfo, superInfo);
ioScore : int = getIOScore (mInfo, superInfo);
callScore : int = getCallScore (mInfo, superInfo);
# same as above but:
# 1 requires no superhas more, 2 requires no subhasmore, and 3 is the remaining
overallScore : int = getOverallScore(throwScore, syncScore, ioScore, callScore);
if (overallScore == 0) {
stat["RESULTS:SAME_EFFECT"] << 1;
}
else if (overallScore == 1) {
stat["RESULTS:SUB_HAS_MORE"] << 1;
doSubHasMoreStatOutput(mInfo, superInfo);
}
else if (overallScore == 2) {
stat["RESULTS:SUPER_HAS_MORE"] << 1;
}
else if (overallScore == 3) {
stat["RESULTS:OTHER"] << 1;
}
else {
stat["RESULTS:GOT_BAD_SCORE=" + format("%s",overallScore)] << 1;
}
if (PAIR_OUTPUT_ENABLED && nrand(PAIR_OUTPUT_FRACTION) == 0) {
out << p.name + "#"
+ mInfo[MDX_NAME] + "#"
+ declNme[decl] + "#"
+ format("%s%s%s%s=%s",throwScore, syncScore, ioScore, callScore, overallScore) + "#"
+ "["
+ mInfo[MDX_THROWS]+ "#"
+ mInfo[MDX_SYNC] + "#"
+ mInfo[MDX_SYNCKIND] + "#"
+ mInfo[MDX_IO_EFFECT] + "#"
+ mInfo[MDX_IOKIND] + "#"
+ mInfo[MDX_METHOD_CALLS] + "#"
+ "]"+ "#"
+ "["
+ superInfo[MDX_THROWS]+ "#"
+ superInfo[MDX_SYNC] + "#"
+ superInfo[MDX_SYNCKIND] + "#"
+ superInfo[MDX_IO_EFFECT] + "#"
+ superInfo[MDX_IOKIND] + "#"
+ superInfo[MDX_METHOD_CALLS] + "#"
+ "]"
;
}
};
outputMethodStats := function(mInfo: array of string) {
stat["METHOD_COUNT"] << 1;
if (mInfo[MDX_PRIMARY_MODIFIER] == MOD_ABSTRACT) {
return;
}
#### Output what effects a given method has
ctrException: int = 0;
ctrSync: int = 0;
ctrIO: int = 0;
ctrCall: int = 0;
ctrFinalString: string = "";
if (mInfo[MDX_THROWS] != ",") ctrException = 1; # list
if (mInfo[MDX_SYNC] != SYNC_NONE) ctrSync = 1; # enum
if (mInfo[MDX_IO_EFFECT] != IO_NONE) ctrIO = 1; # enum
if (mInfo[MDX_METHOD_CALLS] != ",") ctrCall = 1; # list
ctrFinalString = format("%s%s%s%s", ctrException, ctrSync, ctrIO, ctrCall);
stat["METHOD_EFFECT_COUNT=" + ctrFinalString] << 1;
stat["NON_ABSTRACT_METHOD_COUNT"] << 1;
};
outputResults := function() {
# also same for 'effects'
types: array of string = keys(declPkg);
foreach(i: int; def(types[i])) {
curr: string = types[i];
# if type is not duplicated, output results for each method
if (declPkg[curr] != HAS_DUPES_STR) {
stat["CLASS_COUNT"] << 1;
methods: array of string = safeSplit(effects[curr], "#");
foreach(j: int; def(methods[j])) {
mInfo: array of string = splitall(methods[j], ":");
outputMethodStats(mInfo);
outputMethodResults(curr, mInfo);
}
}
}
};
########################################
### Resolution startup ###
########################################
produce := function(snapshot: array of ChangedFile, filterOutList: array of bool) {
file: ChangedFile;
numOut: int = 0; # current size of outers
OUTER_LEN: int = 3; # hard limit of "outer1.outer2.class"
outers: array of string;
outers = new(outers, OUTER_LEN, "");
prodVisit := visitor {
before decl: Declaration -> {
if (decl.kind == TypeKind.CLASS) {
resolvOut["DECLARATION"] << 1;
currOut: string = "";
for(i: int = 0; i < numOut && i < OUTER_LEN; i++)
currOut = currOut + "." + outers[i];
key: string = preprocessDecl(decl, getast(file), currOut);
if (key != INVALID_STR) processDecl(decl, key);
}
numOut++;
if (numOut <= OUTER_LEN) {
outers[numOut - 1] = decl.name;
}
}
after node: Declaration -> numOut--;
# don't look at declarations in a method
before node: Method -> stop;
};
foreach(i: int; def(snapshot[i])) {
file = snapshot[i];
if (filterOutList[i])
continue;
visit(snapshot[i], prodVisit);
if (numOut != 0) {
resolvOut["OUTER_NONZERO (bug?)"] << 1;
numOut = 0;
}
}
};
########################################
### Startup ###
########################################
countNodes := function (snapshot: array of ChangedFile) {
currentNodeCountAST: int = 0;
counterAST := visitor {
before _ -> currentNodeCountAST++;
};
foreach(i:int; def(snapshot[i])) {
visit(snapshot[i], counterAST);
}
stat["PROJECT_LATEST_TOTAL_AST_NODES"] << currentNodeCountAST;
};
# All repositories are Java code repositories. <=1 per project on GitHub
revisionVisitor := visitor {
before node: CodeRepository -> {
stat["CODE_REPOSITORY_COUNT"] << 1;
clear(declImp);
clear(declPkg);
clear(declNme);
clear(effects);
clear(supers);
clear(statics);
snapshot := getsnapshot_mp(node, now());
filterOutList: array of bool;
filterOutList = new(filterOutList, len(snapshot), false);
stat["CONSIDERED_SOURCE_FILES"] << len(snapshot);
# set up statics for throws analysis, check for JUnit prescence
foreach (i: int; def(snapshot[i])) {
root := getast(snapshot[i]);
if (fileIsFilteredOut(root))
filterOutList[i] = true;
else
visit(root, staticMethodVisitor);
}
# set up rest of the structures (for resolv and app)
produce(snapshot, filterOutList);
# count number of AST nodes
countNodes(snapshot);
}
};
visit(p, revisionVisitor);
outputResults();
Output
Job Output Size: 10.76M
Note: Output is
10.76M, only showing first 64k
debugSyncEffect[SYNC_LOCK_VARACCESS] = 231762202
debugSyncEffect[SYNC_SINGLE_ACQUIRE] = 114470
debugSyncEffect[SYNC_SINGLE_RELEASE] = 114170
ioInput[BufferedInputStream] = 22281
ioInput[BufferedReader] = 290833
ioInput[ByteArrayInputStream] = 11850
ioInput[CharArrayReader] = 2269
ioInput[Console] = 1368
ioInput[DataInputStream] = 96393
ioInput[DataInput] = 49063
ioInput[Externalizable] = 333
ioInput[FileInputStream] = 35255
ioInput[FileReader] = 4655
ioInput[File] = 118
ioInput[FilterInputStream] = 1325
ioInput[FilterReader] = 889
ioInput[InputStreamReader] = 14089
ioInput[InputStream] = 204141
ioInput[LineNumberInputStream] = 1458
ioInput[LineNumberReader] = 4458
ioInput[ObjectInputStream] = 112933
ioInput[ObjectInput] = 38468
ioInput[PipedInputStream] = 1723
ioInput[PipedReader] = 1654
ioInput[PushbackInputStream] = 5521
ioInput[PushbackReader] = 5109
ioInput[RandomAccessFile] = 65947
ioInput[Reader] = 34117
ioInput[Scanner] = 80191
ioInput[SequenceInputStream] = 858
ioInput[StreamTokenizer] = 12902
ioInput[StringBufferInputStream] = 750
ioInput[StringReader] = 2790
ioInput[System.in] = 8165
ioOut[DECL_VAR] = 79876417
ioOut[METHOD_VAR] = 206613305
ioOut[SYSTEM] = 6428362
ioOut[THIS] = 6163699
ioOutput[BufferedOutputStream] = 16699
ioOutput[BufferedWriter] = 73439
ioOutput[ByteArrayOutputStream] = 80740
ioOutput[CharArrayWriter] = 4146
ioOutput[Console] = 735
ioOutput[DataOutputStream] = 107292
ioOutput[DataOutput] = 44759
ioOutput[Externalizable] = 116
ioOutput[FileOutputStream] = 61125
ioOutput[FileSystem] = 35628
ioOutput[FileWriter] = 30591
ioOutput[File] = 309709
ioOutput[FilterOutputStream] = 28
ioOutput[FilterWriter] = 909
ioOutput[Flushable] = 239
ioOutput[ObjectOutputStream] = 113323
ioOutput[ObjectOutput] = 40005
ioOutput[OutputStreamWriter] = 18650
ioOutput[OutputStream] = 169688
ioOutput[PipedOutputStream] = 2481
ioOutput[PipedWriter] = 1580
ioOutput[PrintStream] = 118370
ioOutput[PrintWriter] = 258790
ioOutput[RandomAccessFile] = 26745
ioOutput[StringWriter] = 14798
ioOutput[System.err] = 495457
ioOutput[System.out] = 2181845
ioOutput[Writer] = 102346
methodCallDebug[METHOD_MC_TYPE=P] = 453146068
methodCallDebug[METHOD_MC_TYPE=S] = 5824882
methodCallDebug[METHOD_MC_TYPE=T] = 138457739
methodCallDebug[MULTIPLE_SOURCE_EXPRS] = 3168374
methodCallDebug[OTHER_KIND=ARRAYINDEX] = 3368740
methodCallDebug[OTHER_KIND=ASSIGN] = 28347
methodCallDebug[OTHER_KIND=ASSIGN_ADD] = 162
methodCallDebug[OTHER_KIND=CAST] = 4187454
methodCallDebug[OTHER_KIND=CONDITIONAL] = 16535
methodCallDebug[OTHER_KIND=NEWARRAY] = 2016
methodCallDebug[OTHER_KIND=NEW] = 2641490
methodCallDebug[OTHER_KIND=OP_ADD] = 59061
methodCallDebug[OTHER_KIND=OP_DIV] = 2
methodCallDebug[OTHER_KIND=OP_INC] = 54
methodCallDebug[OTHER_KIND=OP_SUB] = 3
out[] = jenny2008/hadoop-2.0.0-alpha-nkfs#hook#SpyHook#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!spy#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = jenny2008/hadoop-2.0.0-alpha-nkfs#abortJob#FileOutputCommitter#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#T!cleanupJob#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!cleanupJob#]
out[] = jenny2008/hadoop-2.0.0-alpha-nkfs#makeQualified#FakeFileSystem2#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!makeQualified,T!checkPath,T!getWorkingDirectory#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!makeQualified,T!checkPath,T!getUri,T!getWorkingDirectory#]
out[] = jenny2008/hadoop-2.0.0-alpha-nkfs#stop#WebAppProxy#1202=3#[YarnException#!NONE#!MODIFIER#NONE#!BUS#P!stop,P!fatal,S!super.stop#]#[,#!BOTH#!MODIFIER#NONE#!BUS#T!changeState,T!ensureCurrentState,T!getName,P!info#]
out[] = jenny2008/hadoop-2.0.0-alpha-nkfs#initialize#FilterFSLV2#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!toString,P!format,P!currentThread,P!getStackTrace,S!super.initialize,P!info#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getUri,P!equals,P!getScheme,P!getConf,S!super.initialize,P!initialize#]
out[] = jenny2008/hadoop-2.0.0-alpha-nkfs#init#NullContextWithUpdateThread#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.init,T!parseAndSetPeriod#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = jenny2008/hadoop-2.0.0-alpha-nkfs#init#LocalContainerAllocator#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!getLong,S!super.init,T!getConfig,P!currentTimeMillis#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getInt,S!super.init#]
out[] = jenny2008/hadoop-2.0.0-alpha-nkfs#dumpDatanode#DatanodeDescriptor#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!toString,P!append,P!size,S!super.dumpDatanode#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!toString,P!append,P!limitDecimalTo2,T!isDecommissioned,T!isDecommissionInProgress,T!getDfsUsed,P!equals,T!getCapacity,P!byteDesc,T!getRemaining,T!getName#]
out[] = jenny2008/hadoop-2.0.0-alpha-nkfs#mkdirs#HarFileSystem#1002=3#[IOException#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!mkdirs#]
out[] = jenny2008/hadoop-2.0.0-alpha-nkfs#processArguments#SetReplication#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.processArguments,T!waitForReplication#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!processArgument,T!displayError#]
out[] = scs/uclinux#blockSizes#CTR#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!iterator#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!unmodifiableList,P!iterator,P!valueOf,P!add#]
out[] = mbcx4jrh/Neural#train#EncogHopfieldNetwork#2001=3#[,#!NONE#!MODIFIER#NONE#!BUS#T!getTrainingDef,P!getInputData,T!train#]#[UnsupportedOperationException#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = scs/uclinux#getBounds#ImageGraphicAttribute#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!getWidth,P!getHeight#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getAdvance,T!getAscent,T!getDescent#]
out[] = colomoto/logicalmodel#importFile#SBMLFormat#3003=3#[IOException#!NONE#!MODIFIER#NONE#!BUS#P!getModel#]#[RuntimeException#!NONE#!MODIFIER#NONE#!BUS#T!getID#]
out[] = mbcx4jrh/Neural#init#MemoryTester#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.init,P!store,P!getInstance#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = scs/uclinux#createDataBuffer#BandedSampleModel#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#T!getDataType,P!createBuffer#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!max,T!getTransferType#]
out[] = scs/uclinux#paint#BasicSliderUI#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!paintThumb,T!paintLabels,T!paintTrack,P!hasFocus,T!recalculateIfInsetsChanged,T!recalculateIfOrientationChanged,P!getPaintLabels,T!paintTicks,T!hitClip,P!getPaintTicks,T!paintFocus,P!getPaintTrack#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = scs/uclinux#paramString#ScrollPane#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!getScrollbarDisplayPolicyString,T!getIsValidString,T!getHeight,T!getY,T!getWidth,T!getInsets,T!getX,T!isWheelScrollingEnabled,T!getName#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getName,P!toString,P!append,S!super.paramString,P!getClass#]
out[] = scs/uclinux#installUI#MultiScrollBarUI#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!hasNext,P!installUI,P!iterator,P!next#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = scs/uclinux#toString#ExtendedKeyUsage#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!getName#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!toHexString#]
out[] = scs/uclinux#getAttributeNamespace#XIncludeFilter#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!getAttributes,P!getNamespaceURI,P!item,S!super.getAttributeNamespace#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getAttributeNamespace#]
out[] = scs/uclinux#setDataElements#BandedSampleModel#1003=1#[IllegalArgumentException,ArrayIndexOutOfBoundsException,ClassCastException#!NONE#!MODIFIER#NONE#!BUS#P!getDataType,P!getData,T!getTransferType,P!getOffset,P!getSize#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getNumDataElements,T!getTransferType,P!setElemDouble,P!setElem,P!setElemFloat#]
out[] = scs/uclinux#getMinimumLength#RETokenIndependent#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!getMinimumLength#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = scs/uclinux#write#BufferedOutputStream#0101=1#[,#!BOTH#!MODIFIER#NONE#!BUS#P!write,P!arraycopy,T!flush#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!write#]
out[] = scs/uclinux#paintBorder#LineBorder#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!drawRect,P!drawRoundRect,P!setColor,P!getColor#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = scs/uclinux#processingInstruction#XIncludeFilter#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.processingInstruction#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!processingInstruction#]
out[] = scs/uclinux#byteValue#Long#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!intValue#]
out[] = scs/uclinux#dispatchEventImpl#Window#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!getID,T!invalidate,S!super.dispatchEventImpl,T!validate#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!dispatchEvent,T!isLightweight,P!consume,S!super.dispatchEventImpl,P!getInstance,P!handleEvent#]
out[] = huangjingyu/xplanner-plus#tearDown#TestRepositorySecurityAdapter#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#P!set,S!super.tearDown#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!set,S!super.tearDown#]
out[] = huangjingyu/xplanner-plus#setUp#BreadCrumbNextPreviousLinksTestScript#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!login,P!getName,T!commitSession,P!setName,T!addProjectStructure,S!super.setUp,T!newProject#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!get,P!openSession,P!setUp,P!getMom,S!super.setUp#]
out[] = JPII/NavalBattle#setWidth#GameWindow#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!render#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = huangjingyu/xplanner-plus#verify#TestJaasLoginModuleAdapter#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.verify,P!verify#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!verify#]
out[] = huangjingyu/xplanner-plus#tearDown#IntegrationPageTestScript#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.tearDown,T!tearDownTestProject#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.tearDown,P!gotoRelativeUrl,P!deleteObjects,P!tearDown#]
out[] = huangjingyu/xplanner-plus#verify#AbstractActionTestCase#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.verify,T!assertTrue#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!verifyMocks,T!assertHelperPresent#]
out[] = huangjingyu/xplanner-plus#setUp#MetricsPageTestScript#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.setUp,T!simpleSetUp#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!get,P!openSession,P!setUp,P!getMom,S!super.setUp#]
out[] = maxgoebel/bladerunner#init#WeblearnEditor#2001=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!startTask,T!setInput,P!setSelectionProvider,T!setSite,T!setPartName#]#[PartInitException#!NONE#!MODIFIER#NONE#!BUS#T!setInput,T!setSite#]
out[] = maxgoebel/bladerunner#getFontBoundingBox#PDType0Font#1002=3#[RuntimeException#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getFontDescriptor,P!getFontBoundingBox#]
out[] = Halofreak1990/JavaXNA#LoadContent#Game1#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!OpenStream,T!getGraphicsDevice,P!FromStream#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = migro1763/breakout#processJoint#Pulleys#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.processJoint#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = quaffle97/mining-pipes#lClick#FliesTool#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!addEntity,P!gridCoordFroomScreenCoord#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = kabassociates/aribaweb#sleep#AWFormRedirect#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.sleep#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = kabassociates/aribaweb#isStateless#PageErrorPanel#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!isClientPanel#]
out[] = kabassociates/aribaweb#init#AWVValidationInvocation#1002=3#[AWMissingBindingException#!NONE#!MODIFIER#NONE#!BUS#P!getName,S!super.init,T!getClass,P!remove#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!debug,P!size,P!intern,P!sharedEncodedString,T!init#]
out[] = kabassociates/aribaweb#allBindings#AWIncludeComponent#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.allBindings,P!elements,P!concatenateArrays#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!list,P!size,P!toArray,T!allBindings#]
out[] = Abandenz/Engine#destruct#RedstoneTorch#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!disconnect#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = kabassociates/aribaweb#objectsAreEqualEnough#AWCaseInsensitiveHashtable#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!equalsIgnoreCase#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!equals#]
out[] = HectorMF/EvilEngine#processBody#Car#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.processBody#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = kabassociates/aribaweb#renderResponse#MetaRules#2002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[AWGenericException#!NONE#!MODIFIER#NONE#!BUS#T!throwException,P!setCurrentTemplateElement,P!renderResponse,P!currentTemplateElement#]
out[] = kabassociates/aribaweb#prepareAndReplace#AWTDynamicDetailAttributes#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!columnStateForSlot,P!prepareAndReplace,P!findColumnForKey,P!mappedSlot,P!setValueForBinding,P!edgeCell,P!currentGroupingState,P!displayGroup,P!valueForBinding,P!pivotState#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!prepare#]
out[] = kabassociates/aribaweb#getExpressionOperator#ASTSubtract#2000=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[RuntimeException#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = HectorMF/EvilEngine#getTag#VerticalStack#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getTag#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = HectorMF/EvilEngine#initialize#Level#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.initialize#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!get,P!config,P!size,P!initialize#]
out[] = kabassociates/aribaweb#renderResponse#AWPrimitiveString#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!response,P!value,P!appendContent,T!stringValueForObjectInComponent#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = undyliu/mars#setUpColorArrs#TextureDefaultTheme#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!arraycopy,P!brighter,P!darker,S!super.setUpColorArrs,P!createColorArr#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!brighter,P!darker,P!createColorArr#]
out[] = millecker/hadoop-1.0.3-gpu#cleanupJob#FileOutputCommitter#0011=1#[,#!NONE#!MODIFIER#OUT#!BUS#P!getProgressible,P!delete,P!progress,P!getFileSystem,P!warn,P!exists,P!getOutputPath,P!getJobConf#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = undyliu/mars#getFrameColor#HiFiScrollButton#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!isPressed,P!getButtonBackgroundColor,P!brighter,P!darker,P!getTheme,T!getModel,P!isRollover#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = undyliu/mars#paintBackground#TextureRadioButtonUI#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!getWidth,P!fillComponent,P!equals,P!getBackground,P!setColor,P!getBackgroundColor,P!getHeight,P!fillRect,P!isOpaque#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getWidth,P!getBackground,P!setColor,P!getHeight,P!fillRect#]
out[] = undyliu/mars#getVerSpacing#AeroTitlePane#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!isMacStyleWindowDecorationOn,P!getTheme#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = hyongbai/android-samples#onCreate#MainActivity#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!findViewById,P!setOnClickListener,T!setContentView,S!super.onCreate,T!setTitle#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!requestWindowFeature,S!super.onCreate#]
out[] = johnkang/ActionBarShareLock#setAdapter#IcsSpinner#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.setAdapter,P!setAdapter#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!checkSelectionChanged,T!setNextSelectedPositionInt,T!setSelectedPositionInt,P!registerDataSetObserver,T!requestLayout,T!resetList,T!checkFocus,P!unregisterDataSetObserver,P!getCount#]
out[] = johnkang/ActionBarShareLock#clone#ObjectAnimator#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.clone#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!clone,P!get,P!put,P!size,P!add,P!getPropertyName,S!super.clone#]
out[] = millecker/hadoop-1.0.3-gpu#decWaitingMaps#JobTrackerMetricsSource#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!decr#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = millecker/hadoop-1.0.3-gpu#configure#MapperClass#1001=1#[RuntimeException#!NONE#!MODIFIER#NONE#!BUS#P!get,P!close,P!getFileSystem,P!create#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = WPI-Suite/wpi-suite#getDataItem#OHLCSeries#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getDataItem#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!get#]
out[] = WPI-Suite/wpi-suite#equals#ValueAxis#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!equal,S!super.equals,P!equals#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!equal#]
out[] = WPI-Suite/wpi-suite#equals#StandardCategoryToolTipGenerator#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.equals#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!equal,P!equals#]
out[] = WPI-Suite/wpi-suite#setAxisProperties#DefaultNumberAxisEditor#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!setAutoRange,S!super.setAxisProperties,P!setRange#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!setTickMarksVisible,P!setTickLabelPaint,T!getLabel,P!setLabel,T!getLabelPaint,P!setTickLabelsVisible,P!setTickLabelFont,T!getTickLabelFont,T!isTickLabelsVisible,T!getTickLabelInsets,T!getTickLabelPaint,P!setLabelInsets,P!setLabelPaint,T!getLabelFont,T!isTickMarksVisible,T!getLabelInsets,P!setTickLabelInsets,P!setLabelFont#]
out[] = WPI-Suite/wpi-suite#createItemArray#IntervalXYItemLabelGenerator#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!getEndYValue,T!getYFormat,P!isNaN,P!format,P!getYValue,P!getXValue,T!getNullYString,T!getYDateFormat,P!getSeriesKey,P!toString,P!getEndY,P!getEndXValue,P!getStartY,P!getY,T!getXDateFormat,P!getStartXValue,T!getXFormat,P!getStartYValue#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!isNaN,P!toString,P!format,P!getYValue,P!getXValue,P!getY,P!getSeriesKey#]
out[] = WPI-Suite/wpi-suite#getMiddleMillisecond#FixedMillisecond#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getLastMillisecond,T!getFirstMillisecond#]
out[] = WPI-Suite/wpi-suite#getEntity#MockUserManager#2002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[NotFoundException#!NONE#!MODIFIER#NONE#!BUS#P!equalsIgnoreCase,P!toArray,P!retrieve#]
out[] = WPI-Suite/wpi-suite#equals#DialCap#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!equal,S!super.equals,P!equals#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = WPI-Suite/wpi-suite#hashCode#TitleEntity#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!hashCode,T!getURLText,T!getToolTipText#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!hashCode#]
out[] = rcaa/argouml-app-layaspects#toDoItem#CompoundCritic#1000=1#[UnsupportedOperationException#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = rcaa/argouml-app-layaspects#getProfileIdentifier#ProfileGoodPractices#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getDisplayName#]
out[] = snowfeet/policyboosting#makeDecisionS#NPPGPolicy#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#T!getProbability,T!makeDecisionS#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getProbability,T!makeDecisionS#]
out[] = snowfeet/policyboosting#getProbability#BoostedMuiltModelPolicyDebug#0022=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!exp#]#[,#!NONE#!MODIFIER#OUT#!CONSOLE#P!exp,P!println,P!print#]
out[] = DonTomika/xstream-android#unescapeName#XStream11XmlFriendlyReplacer#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.decodeNode#]
out[] = DonTomika/xstream-android#serializedClass#EnumMapper#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.serializedClass,P!isAssignableFrom,P!getSuperclass#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!serializedClass#]
out[] = rcaa/argouml-app-layaspects#insertString#UMLSynchStateBoundDocument#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.insertString,P!parseInt#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getText,S!super.insertString,T!setPropertyInternal,T!getLength#]
out[] = CapCaval/Ermine#render#CircleJ2DShapeImpl#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!getFillStyle,P!getPainting,P!fillOval,P!drawOval,P!dispose,P!create,P!setPaint,S!super.render#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!setStroke,P!setColor,P!getColor#]
out[] = victor2100/PressManagementSystem#getQuerySpaces#UnionSubclassEntityPersister#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getPropertySpaces#]
out[] = victor2100/PressManagementSystem#getAddColumnString#SAPDBDialect#2000=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[UnsupportedOperationException#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = victor2100/PressManagementSystem#getForUpdateString#InterbaseDialect#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getForUpdateString#]
out[] = victor2100/PressManagementSystem#instantiate#EmbeddedComponentType#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!isInstance,S!super.getReturnedClass,S!super.instantiate#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getTuplizer,P!getFactory,T!instantiate,P!hasParentProperty,P!proxyFor,P!setParent,P!getPersistenceContext,P!getEntityMode#]
out[] = victor2100/PressManagementSystem#getCurrentTimestampSelectString#H2Dialect#2000=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[UnsupportedOperationException#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = victor2100/PressManagementSystem#accept#UnionSubclass#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#P!accept#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!accept#]
out[] = victor2100/PressManagementSystem#getDiscriminatorColumnIterator#SingleTableSubclass#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getDiscriminatorColumnIterator,T!getDiscriminator,P!hasFormula,T!isDiscriminatorInsertable,P!getColumnIterator#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = victor2100/PressManagementSystem#supportsVariableLimit#InformixDialect#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!supportsLimit#]
out[] = victor2100/PressManagementSystem#inProjectionList#ImpliedFromElement#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#T!isFromOrJoinFragment#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!isImplied,T!isFromOrJoinFragment#]
out[] = chetrebman/fedoraApp-fedoraProxy-complete#writeTo#ByteArrayBuffer#0002=2#[,#!NONE#!MODIFIER#OUT#!BUS#P!write,T!length,T!getIndex,T!clear#]#[,#!NONE#!MODIFIER#OUT#!BUS#P!write,T!array,T!length,T!getIndex,T!clear,T!peek#]
out[] = chetrebman/fedoraApp-fedoraProxy-complete#onConnectionFailed#SimpleExchange#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!warn#]
out[] = chetrebman/fedoraApp-fedoraProxy-complete#write#Applet#0021=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!get,P!nextElement,P!toString,S!super.write,P!keys,T!attribute,P!add,P!hasMoreElements#]#[,#!NONE#!MODIFIER#OUT#!BUS#P!write,S!super.write,T!attributes#]
out[] = chetrebman/fedoraApp-fedoraProxy-complete#idInUse#TestSessionIdManager#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!containsKey#]
out[] = chetrebman/fedoraApp-fedoraProxy-complete#undispatch#ConnectorEndPoint#0201=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!debug,S!super.undispatch,P!getRequest,P!getContinuation,P!undispatch,T!getConnection#]#[,#!BOTH#!BLOCK#NONE#!BUS#P!addChange,T!updateKey,P!ignore#]
out[] = nafsimao/gdc#remove#RequirementVersionEntityManager#1001=1#[TransactionException#!NONE#!MODIFIER#NONE#!BUS#P!persist,P!isActive,P!rollback,S!super.remove,P!getParent,P!beginTransaction,T!find,P!commit,P!getKey,P!getProperty#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!delete#]
out[] = chetrebman/fedoraApp-fedoraProxy-complete#onResponseStatus#SecurityListener#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!isDebugEnabled,P!debug,S!super.onResponseStatus,T!setDelegatingResponses,P!maxRetries,T!setDelegatingRequests,P!getHttpClient#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!onResponseStatus#]
out[] = HowardStark/Apex-Devs#drawPanel#PanelRetard#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.drawPanel,P!add,P!clear,P!drawString#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getWidth,P!drawGradientBRect#]
out[] = ZombesModpack/Zombes#setGameType#EntityPlayerMP#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!getID,P!setGameType,P!sendPacketToPlayer#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = utoPiC/absLibary#setIntValues#IntPropertyValuesHolder#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.setIntValues#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!ofInt#]
out[] = utoPiC/absLibary#getMenuView#ActionMenuPresenter#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!setPresenter,S!super.getMenuView#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!updateMenuView,P!inflate,P!initialize#]
out[] = jogy/jmoney#toSplittedEntry#SplittedEntry#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!getEntries,P!setEntries#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = faberchri/tree-builder-2#getFileExtensions#ExcelExampleSource#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getFileExtension#]
out[] = faberchri/tree-builder-2#getParameterTypes#NumericValueAttributeFilter#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!add#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = faberchri/tree-builder-2#getPlotter#RangeablePlotterAdapter#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!updatePlotter#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = faberchri/tree-builder-2#createImage#MenuBarBackgroundPainter#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!createCompatibleVolatileImage#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!createCompatibleImage#]
out[] = faberchri/tree-builder-2#setDataTable#RangeablePlotterAdapter#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!dataTableSet#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = faberchri/tree-builder-2#allEntries#Histogram2D#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!bins,T!binEntries#]
out[] = faberchri/tree-builder-2#setAdditionalParameter#LocalNormalizationPlotterAdapter#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.setAdditionalParameter,P!equals,T!updatePlotter,P!parseBoolean#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.setAdditionalParameter,P!equals,T!updatePlotter,P!parseBoolean#]
out[] = faberchri/tree-builder-2#hashCode#ConditionedExampleSet#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.hashCode,P!hashCode#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!hashCode,T!getAttributes#]
out[] = softwarekitty/CatalogEditorDemo#toString#OfferingFacade#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!hasTerm,T!getS#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getS#]
out[] = faberchri/tree-builder-2#init#NumericToFormattedNominal#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!setGroupingUsed,P!getPercentInstance,P!get,T!getParameterAsBoolean,P!getNumberInstance,T!getParameterAsInt,P!size,T!getParameterAsString,P!getIntegerInstance,P!getCurrencyInstance#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = faberchri/tree-builder-2#hashCode#ReplaceMissingExampleSet#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.hashCode,P!hashCode#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!hashCode,T!getAttributes#]
out[] = faberchri/tree-builder-2#clone#CharArrayList#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!clone,P!setSizeRaw#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!partFromTo#]
out[] = faberchri/tree-builder-2#getListeningObjects#LocalNormalizationPlotterAdapter#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#P!add,S!super.getListeningObjects#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!add,S!super.getListeningObjects#]
out[] = faberchri/tree-builder-2#ensureCapacity#OpenIntObjectHashMap#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!rehash,T!nextPrime#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = faberchri/tree-builder-2#ok#TextPropertyDialog#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!dispose,P!getText#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!dispose#]
out[] = faberchri/tree-builder-2#setAbsolute#StackedBarChartPlotter#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!updatePlotter#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = faberchri/tree-builder-2#shouldEstimatePerformance#JMySVMLearner#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!getParameterAsBoolean#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = gueei/AndroidBinding#registerProviders#DefaultKernelV30#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.registerProviders,P!warning,P!registerProvider#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!registerProvider#]
out[] = aerich/CaisseJava#updateLong#UpdatableResultSet#2101=3#[,#!BOTH#!MODIFIER#NONE#!BUS#P!setLong,T!syncUpdate,P!setColumnValue,P!getBytesRepresentation#]#[NotUpdatable#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = randiw/mother-father#clone#IntPropertyValuesHolder#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.clone#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!clone,S!super.clone#]
out[] = gueei/AndroidBinding#onDestroy#BindingABSActivity#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!dispatchDestroy,T!getSherlock,S!super.onDestroy#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!removeRefs,S!super.onDestroy#]
out[] = aerich/CaisseJava#setNull#ServerPreparedStatement#0203=2#[,#!NONE#!MODIFIER#NONE#!BUS#T!setType,T!getBinding,T!checkClosed#]#[,#!BOTH#!BLOCK#NONE#!BUS#T!checkClosed,T!setInternal,T!getParameterIndexOffset#]
out[] = aerich/CaisseJava#close#JDBC4PreparedStatementWrapper#0103=1#[,#!BOTH#!MODIFIER#NONE#!BUS#S!super.close,P!fireStatementEvent#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!checkAndFireConnectionError,P!close#]
out[] = aerich/CaisseJava#getImportedKeys#DatabaseMetaDataUsingInfoSchema#0001=1#[SQLException#!NONE#!MODIFIER#NONE#!BUS#T!generateDeleteRuleClause,P!createSQLException,P!close,T!createFkMetadataFields,T!executeMetadataQuery,P!setString,T!prepareMetaDataSafeStatement,P!redefineFieldsForDBMD,P!getNullCatalogMeansCurrent,T!generateUpdateRuleClause,T!generateOptionalRefContraintsJoin,T!getExceptionInterceptor#]#[SQLException#!NONE#!MODIFIER#NONE#!BUS#P!versionMeetsMinimum,P!createSQLException,P!close,T!getCatalogIterator,P!doForAll,T!createFkMetadataFields,P!getMetadataSafeStatement,T!getExceptionInterceptor,T!buildResultSet#]
out[] = sshivaji/josechess#checkMove#Pawn#3001=1#[IllegalStateException#!NONE#!MODIFIER#NONE#!BUS#P!rowOf,T!isWhite,P!setPawnDouble,P!enPassantFile,P!setEnPassant,P!isEnPassantRow,P!isPromotion,P!isPromotionRow,T!color,P!piece,P!fileOf,T!getVTable,P!isEmpty,P!getEnPassantSquare#]#[AbstractMethodError#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = sshivaji/josechess#deletePiece#Position#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.deletePiece,T!hasOption,P!piece,P!clear,P!square#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!setVacant,P!square#]
out[] = sshivaji/josechess#requestAbort#DBTask#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!cancelQuery,S!super.requestAbort#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!plus#]
out[] = rubypdf/iText-4.2.0#setFont#RtfField#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.setFont#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = sshivaji/josechess#toArray#AbstractSet#2000=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[UnsupportedOperationException#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = sshivaji/josechess#init#SymbolBar#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!get,P!getEncoding,T!addButton,P!getSymbol,P!getFontFamily,P!newFont,P!getStyle,P!getTip,P!getStyleContext,P!length#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = Viewtiful/RoboTech#render#BarreEnergie#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!length,P!setWidth,P!fill,T!getCouleur,P!getMax,P!getY,T!getWidth,P!setColor,P!getPlusEnergie,T!getBarName,P!drawString,T!getBarre,P!getX#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!length,P!getMax,P!getY,T!getWidth,P!setWidth,P!fill,P!setColor,T!getBarName,P!drawString,P!getX#]
out[] = sshivaji/josechess#figurine#SAXMoveFormatter#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!text,P!valueOf,P!uncolored,P!element#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!append,P!uncolored#]
out[] = rubypdf/iText-4.2.0#toPdf#PdfDictionary#0001=1#[,#!NONE#!MODIFIER#OUT#!BUS#P!hasNext,P!get,P!write,P!toPdf,P!iterator,P!next,P!keySet,P!type#]#[,#!NONE#!MODIFIER#OUT#!BUS#P!write#]
out[] = beikov/flo_and_christian_ds_lab_02#toString#AuctionTimeAvgEvent#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#T!getValue,S!super.toString#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!append,P!toString,T!getType,T!getTimeStamp#]
out[] = TeamBAKED/frameworks_opt_telephony#responseSignalStrength#SamsungQualcommRIL#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!readInt#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!makeSignalStrengthFromRilParcel#]
out[] = TeamBAKED/frameworks_opt_telephony#notifyDataConnection#DataConnectionTracker#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!getApnType,P!isReady,P!notifyDataConnection,T!log,T!notifyOffApnsOfAvailability,P!getReason,P!values#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!notifyDataConnection,T!notifyOffApnsOfAvailability,T!apnIdToType#]
out[] = TeamBAKED/frameworks_opt_telephony#processUnsolicited#HTCQualcommRIL#2002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!set,P!dataPosition,T!responseVoid,T!notifyRegistrantsRilConnectionChanged,P!equals,P!notifyRegistrants,T!responseStrings,P!readInt,S!super.processUnsolicited,P!get,P!setDataPosition,T!unsljLogRet,T!responseInts,T!setCdmaSubscriptionSource,T!setRadioPower,T!setCellInfoListRate,T!setPreferredNetworkType#]#[RuntimeException#!NONE#!MODIFIER#NONE#!BUS#T!processUnsolOemhookResponse,T!unsljLogMore,T!responseCdmaSms,T!responseRaw,P!valueOf,T!responseString,P!equals,P!getSystem,T!responseSuppServiceNotification,P!d,T!responseStrings,P!e,T!responseSimRefresh,P!readInt,T!isQcUnsolOemHookResp,P!get,T!riljLog,T!unsljLogRet,T!getRadioStateFromInt,T!unsljLog,T!setRadioPower,T!responseDataCallList,T!setCellInfoListRate,T!setPreferredNetworkType,P!bytesToHexString,T!responseCallRing,P!getBoolean,T!responseCdmaCallWaiting,P!order,T!responseVoid,T!notifyRegistrantsRilConnectionChanged,T!notifyRegistrantsCdmaInfoRec,P!readLong,T!responseSignalStrength,P!notifyRegistrants,T!unsljLogvRet,P!toString,P!nativeOrder,T!switchToRadioState,T!needsOldRilFeature,P!notifyRegistrant,T!responseInts,P!wrap,P!newFromCMT,T!setCdmaSubscriptionSource,T!responseCellInfoList,T!responseSsData,T!responseCdmaInformationRecord#]
out[] = TeamBAKED/frameworks_opt_telephony#onAllRecordsLoaded#CdmaLteUiccRecords#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.onAllRecordsLoaded,T!setLocaleFromCsim#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!set,T!setVoiceMailByCountry,T!loge,T!getOperatorNumeric,T!log,P!countryCodeForMcc,P!notifyRegistrants,T!setSpnFromConfig,P!parseInt,P!substring#]
out[] = TeamBAKED/frameworks_opt_telephony#responseSetupDataCall#QualcommSharedRIL#0001=1#[RuntimeException#!NONE#!MODIFIER#NONE#!BUS#P!get,P!getErrorCode,S!super.responseSetupDataCall,T!needsOldRilFeature,P!readString,P!split,P!length,P!parseInt,P!isEmpty,P!substring#]#[RuntimeException#!NONE#!MODIFIER#NONE#!BUS#T!riljLog,T!needsOldRilFeature,P!readString,T!getDataCallResponse,P!split,P!parseInt,P!isEmpty,P!readInt#]
out[] = antani/Plugin#getPropertyValue#ConnectTask#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!getDfmuser,T!getIgnorecert,T!getDfmserver,P!equals,T!getUsehttps,T!getDfmpwd,S!super.getPropertyValue,T!getName#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!equals,S!super.getPropertyValue,T!getName#]
out[] = gokudomatic/Classeur#stop#Clip#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!setLoopPoints,T!loop,P!flush,S!super.stop#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!fireListenerUpdate#]
out[] = gokudomatic/Classeur#toString#CallDeflectionInd#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.toString,P!capiInfo2Str#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.toString#]
out[] = gokudomatic/Classeur#writeTo#SMSDeliver#2011=3#[,#!NONE#!MODIFIER#OUT#!BUS#P!writeTo,T!get,P!write,T!put,T!writeUserDataTo,T!getOctet,P!flush#]#[IOException#!NONE#!MODIFIER#NONE#!BUS#P!getName,T!getClass#]
out[] = avakar/stanse#hashCode#CFG#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.hashCode,P!hashCode#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.hashCode,T!getStartNode,P!getNumber,T!getEndNode#]
out[] = gokudomatic/Classeur#start#TargetDataLine#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!flush,S!super.start#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!fireListenerUpdate#]
out[] = cthiemann/SPaTo_Visual_Explorer#scale#PGraphicsJava2D#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!scale#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!showMissingWarning#]
out[] = cthiemann/SPaTo_Visual_Explorer#arcImpl#PGraphicsJava2D#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!fillShape,T!strokeShape,P!setArc#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = cthiemann/SPaTo_Visual_Explorer#arcImpl#PGraphics3D#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!vertex,T!endShape,T!beginShape#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = gokudomatic/Classeur#toString#BypassInd#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.toString#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.toString#]
out[] = gokudomatic/Classeur#setWordValue#IntRange#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!abs,S!super.setWordValue#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!isWritable,T!setWordArrayControlOption,T!signalReloadOptions,T!getWordArrayControlOption#]
out[] = srisatish/openjdk#Blit#OpaqueCopyAnyToArgb#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!markDirty,P!getRGB,P!getSpanIterator,P!nextSpan,P!getScanlineStride,P!getDataElements,P!getRegionOfInterest,P!getDataOffset,P!getColorModel,P!getDataStorage,P!getRaster#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#handleQuit#MFileDialogPeer#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!executeOnEventHandlerThread#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!postEvent#]
out[] = srisatish/openjdk#createSocket#ClientFactory#2012=3#[,#!NONE#!MODIFIER#OUT#!CONSOLE#S!super.createSocket,P!println#]#[!UNKNOWN!#!NONE#!MODIFIER#NONE#!BUS#P!setEnabledCipherSuites,P!nextToken,P!createSocket,P!initCause,P!getMessage,T!getDefaultClientSocketFactory,P!setEnabledProtocols,P!countTokens,P!getProperty#]
out[] = srisatish/openjdk#openServer#FtpClient#3002=2#[FtpProtocolException#!NONE#!MODIFIER#NONE#!BUS#S!super.openServer,T!readReply,T!getResponseString#]#[InternalError#!NONE#!MODIFIER#NONE#!BUS#T!doConnect,P!getInputStream,P!getOutputStream,T!closeServer#]
out[] = srisatish/openjdk#uninstallUI#MultiRootPaneUI#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!size,P!elementAt,P!uninstallUI#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#getDescription#SPARCFPArithmeticInstruction#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!toString,P!append,T!getName#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!toString,P!append,T!getOperand2String,T!getName#]
out[] = srisatish/openjdk#getPreferredSize#MultiRootPaneUI#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!size,P!getPreferredSize,P!elementAt#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#getIssuerAlternativeNames#MyX509CertImpl#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#P!getIssuerAlternativeNames#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getIssuerAlternativeNames#]
out[] = srisatish/openjdk#checkUnregister#MBeanServerFileAccessController#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#T!checkAccess#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!checkWrite#]
out[] = srisatish/openjdk#costInline#VarDeclarationStatement#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!costInline,P!isInnerClass#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#getWMName#XWarningWindow#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getName,P!getCorrectXIDString,T!getClass#]
out[] = srisatish/openjdk#handleClientMessage#XDecoratedPeer#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!get_message_type,P!getAtom,P!get_xclient,S!super.handleClientMessage,T!handleQuit,P!get_data,T!handleWmTakeFocus,T!reshape#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!isLoggable,P!finer,P!toString,P!get_xclient#]
out[] = srisatish/openjdk#read#WrapTokenInputStream#0011=1#[,#!NONE#!MODIFIER#IN#!BUS#P!read,P!min#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!read#]
out[] = srisatish/openjdk#toString#UnresolvedPermission#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getName,T!getClass,T!getActions,P!length#]
out[] = srisatish/openjdk#paintDecreaseHighlight#WindowsScrollBarUI#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!getWidth,S!super.paintDecreaseHighlight,P!paint,P!getY,P!getInsets,T!getThumbBounds,P!getHeight,P!getOrientation,P!getX#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getWidth,P!isLeftToRight,P!getComponentOrientation,P!setColor,P!getInsets,T!getThumbBounds,P!getHeight,P!fillRect,P!getOrientation#]
out[] = srisatish/openjdk#print#FloatExpression#0000=0#[,#!NONE#!MODIFIER#OUT#!BUS#P!print#]#[,#!NONE#!MODIFIER#OUT#!BUS#P!print#]
out[] = srisatish/openjdk#getAccessibleChild#MultiTableHeaderUI#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!size,P!getAccessibleChild,P!elementAt#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getAccessibleChild#]
out[] = srisatish/openjdk#focusGained#XChoicePeer#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#T!repaint,S!super.focusGained#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!isLoggable,P!valueOf,P!log#]
out[] = srisatish/openjdk#available#StringBufferInputStream#0100=1#[,#!BOTH#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#makeProxyFor#Win32OffScreenSurfaceData#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!createProxy#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#code#ForStatement#2001=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!code,P!add,P!codeBranch#]#[CompilerError#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#contentType#EngineInputRecord#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.contentType#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#setAccessibleName#EditorAccessibleContext#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!setAccessibleName#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!firePropertyChange#]
out[] = srisatish/openjdk#getBreakWeight#HRuleView#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getPreferredSpan#]
out[] = srisatish/openjdk#doControlButtonsChanged#GTKFileChooserUI#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#T!getFileChooser,S!super.doControlButtonsChanged,P!getControlButtonsAreShown,P!add,T!updateDefaultButton,P!remove#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getApproveButtonText,T!getFileChooser,P!getControlButtonsAreShown,T!getApproveButtonToolTipText,P!setToolTipText,P!setText#]
out[] = DSpace/DSpace-SVN-Deprecated#propfindInternal#DAVWorkspaceItem#0002=2#[DAVStatusException#!NONE#!MODIFIER#NONE#!BUS#P!getName,P!getID,T!elementsEqualIsh,P!valueOf,P!getStageReached,T!getPathElt,T!filterForXML,S!super.propfindInternal,P!setText,P!getNamespace#]#[DAVStatusException#!NONE#!MODIFIER#NONE#!BUS#P!clone,P!getHandle,T!addPrivilege,P!getSubmitter,P!valueOf,T!filterForXML,T!hrefToEPerson,T!canonicalizeHandle,P!getName,T!commonPropfindInternal,T!elementsEqualIsh,P!getCollection,P!hasMultipleFiles,P!isPublishedBefore,P!setText,P!getNamespace,P!hasMultipleTitles#]
out[] = BIOFAB/ClothoBiofabEdition#save#Annotation#0002=2#[,#!BOTH#!MODIFIER#OUT#!CONSOLE#T!getFeature,S!super.save,P!save,P!isInDatabase,P!println,P!isLocal#]#[,#!BOTH#!MODIFIER#OUT#!CONSOLE#T!getType,P!showMessageDialog,P!save,P!showConfirmDialog,P!getTimeModified,P!isConnected,P!after,T!getUUID,T!isChanged,P!join,P!println,T!getName#]
out[] = DSpace/DSpace-SVN-Deprecated#doDSGet#SuggestServlet#1001=1#[AuthorizeException,MessagingException#!NONE#!MODIFIER#NONE#!BUS#P!getCanonicalForm,P!lastIndexOf,P!getFullName,P!send,P!addArgument,P!getPathInfo,P!getParameter,P!equals,P!showInvalidIDError,P!getHeader,P!resolveToObject,P!getLocalHost,P!getMessage,P!warn,P!resolveToURL,P!setReplyTo,P!isEmpty,P!info,P!showJSP,P!getEmail,P!getCollections,P!indexOf,P!getMetadata,P!getHostAddress,P!getProperty,P!addRecipient,P!getEmailFilename,P!setAttribute,P!showInternalError,P!getBooleanProperty,P!getCurrentLocale,P!getDC,P!getCurrentUser,P!substring#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.doGet#]
out[] = DSpace/DSpace-SVN-Deprecated#addBody#InitialQuestionsStep#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!getHandle,P!addContent,T!addSubmissionProgressList,P!setLabel,P!setOptionSelected,P!addInteractiveDivision,T!addControlButtons,P!addHighlight,P!setHead,P!getId,P!addList,P!addCheckBox,P!setValue,P!addHidden,P!addOption,P!setHelp,P!getItem,P!getCollection,P!addItem,P!getDC,P!isPublishedBefore,P!hasMultipleTitles#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = DSpace/DSpace-SVN-Deprecated#recycle#CollectionViewer#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.recycle#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.recycle#]
out[] = DSpace/DSpace-SVN-Deprecated#addBody#RegistrationFinished#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!addXref,P!addPara,P!registrationProgressList,P!setHead,P!addDivision#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = DSpace/DSpace-SVN-Deprecated#getChildCollections#CollectionDAOPostgres#1001=1#[RuntimeException#!NONE#!MODIFIER#NONE#!BUS#T!returnAsList,P!getID,P!queryTable#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getChildCollections#]
out[] = DSpace/DSpace-SVN-Deprecated#addOptions#Navigation#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!addList#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#createMouseInputListener#MotifMenuItemUI#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getHandler#]
out[] = srisatish/openjdk#isArmed#ButtonHandler#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!isPressed,T!shouldActLikeButton,P!isPopupVisible,S!super.isArmed#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#unconfigureEditor#MetalComboBoxUI#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.unconfigureEditor#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!removePropertyChangeListener,P!getEditor,P!removeFocusListener,T!getHandler,P!removeActionListener#]
out[] = srisatish/openjdk#mark#DeflaterInputStream#0202=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!BOTH#!MODIFIER#NONE#!BUS#P!mark#]
out[] = srisatish/openjdk#getSecondaryIndex#BytecodeInvoke#2001=3#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getSecondaryIndex,P!getBytes,T!isInvokedynamic,P!getVM,P!swapInt,T!javaSignedWordAt#]#[IllegalArgumentException#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#getThrownTypes#MethodType#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!nil#]
out[] = srisatish/openjdk#setPixels#ByteInterleavedRaster#1003=1#[ArrayIndexOutOfBoundsException#!NONE#!MODIFIER#NONE#!BUS#T!markDirty#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!setPixels#]
out[] = bbrodt/bpmn2#eStaticClass#DataStoreImpl#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!getDataStore#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getRootElement#]
out[] = bbrodt/bpmn2#notifyChanged#ChoreographyTaskItemProvider#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.notifyChanged,T!updateChildren#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.notifyChanged,P!getFeatureID,P!getNotifier,T!fireNotifyChanged,T!updateChildren#]
out[] = bbrodt/bpmn2#getPropertyDescriptors#ResourceParameterItemProvider#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!addIsRequiredPropertyDescriptor,S!super.getPropertyDescriptors,T!addTypePropertyDescriptor,T!addNamePropertyDescriptor#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getPropertyDescriptors,T!addIdPropertyDescriptor#]
out[] = bbrodt/bpmn2#eSet#InterfaceImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#T!getOperations,P!addAll,S!super.eSet,P!clear,T!setImplementationRef,T!setName#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getExtensionValues,P!set,T!getExtensionDefinitions,P!addAll,S!super.eSet,P!clear,T!getDocumentation,T!setId,T!getAnyAttribute#]
out[] = bbrodt/bpmn2#collectNewChildDescriptors#IntermediateCatchEventItemProvider#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.collectNewChildDescriptors#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getDocumentRoot_CompensateEventDefinition,P!createSignalEventDefinition,P!getCatchEvent_DataOutputAssociation,P!add,P!getDocumentRoot_LinkEventDefinition,P!createEntry,P!createEscalationEventDefinition,P!createTimerEventDefinition,P!createTerminateEventDefinition,P!getCatchEvent_DataOutput,P!createLinkEventDefinition,P!createDataOutput,P!getDocumentRoot_ConditionalEventDefinition,P!createConditionalEventDefinition,P!createCancelEventDefinition,P!getCatchEvent_EventDefinitionGroup,P!getDocumentRoot_EscalationEventDefinition,P!getDocumentRoot_SignalEventDefinition,P!createOutputSet,P!createDataOutputAssociation,T!createChildParameter,P!createErrorEventDefinition,P!createCompensateEventDefinition,S!super.collectNewChildDescriptors,P!createMessageEventDefinition,P!getCatchEvent_OutputSet,P!getDocumentRoot_TimerEventDefinition,P!getDocumentRoot_TerminateEventDefinition,P!getDocumentRoot_MessageEventDefinition,P!getCatchEvent_EventDefinition,P!getDocumentRoot_CancelEventDefinition,P!getDocumentRoot_ErrorEventDefinition#]
out[] = bbrodt/bpmn2#getCreateChildText#SignalEventDefinitionItemProvider#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#P!getValue,P!isFeatureMap,T!getString,T!getFeatureText,P!getEStructuralFeature,S!super.getCreateChildText,T!getTypeText#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getValue,P!isFeatureMap,T!getString,T!getFeatureText,P!getEStructuralFeature,S!super.getCreateChildText,T!getTypeText#]
out[] = bbrodt/bpmn2#getChildFeature#AssignmentItemProvider#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getChildFeature#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getChildFeature#]
out[] = bbrodt/bpmn2#toString#PartnerRoleImpl#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#P!toString,P!append,T!eIsProxy,S!super.toString#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!toString,P!append,T!eIsProxy,S!super.toString#]
out[] = bbrodt/bpmn2#collectNewChildDescriptors#DataStoreReferenceItemProvider#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!add,T!createChildParameter,S!super.collectNewChildDescriptors,P!createDataState#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!createAuditing,P!add,T!createChildParameter,P!createMonitoring,S!super.collectNewChildDescriptors#]
out[] = bbrodt/bpmn2#eGet#TimerEventDefinitionImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eGet,T!getTimeDate,T!getTimeCycle#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getWrapper,S!super.eGet,T!getAny,T!getDocumentation,T!getId,T!getAnyAttribute#]
out[] = bbrodt/bpmn2#eSet#CallableElementImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#T!setIoSpecification,P!addAll,S!super.eSet,P!clear,T!getSupportedInterfaceRefs,T!getIoBindings,T!setName#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getDocumentations,P!set,T!getAny,P!addAll,S!super.eSet,P!clear,T!setId,T!getAnyAttribute#]
out[] = bbrodt/bpmn2#eGet#DataStateImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eGet,T!getName#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getDocumentations,P!getWrapper,S!super.eGet,T!getAny,T!getId,T!getAnyAttribute#]
out[] = bbrodt/bpmn2#notifyChanged#LabeledShapeItemProvider#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.notifyChanged,T!updateChildren#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.notifyChanged,P!getFeatureID,P!getNotifier,T!fireNotifyChanged,T!updateChildren#]
out[] = bbrodt/bpmn2#eGet#RelationshipImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eGet,T!getType,T!getTarget,T!getSource,T!getDirection#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getWrapper,S!super.eGet,T!getAny,T!getDocumentation,T!getId,T!getAnyAttribute#]
out[] = bbrodt/bpmn2#notifyChanged#InputOutputBindingItemProvider#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.notifyChanged,P!getFeatureID,P!getNotifier,T!fireNotifyChanged,T!updateChildren#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.notifyChanged,P!getFeatureID,P!getNotifier,T!fireNotifyChanged,T!updateChildren#]
out[] = bbrodt/bpmn2#eInverseRemove#ParticipantImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#T!basicSetParticipantMultiplicity,S!super.eInverseRemove#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eInverseRemove,T!getAny,T!getDocumentation,P!basicRemove,T!getAnyAttribute#]
out[] = bbrodt/bpmn2#eGet#TextAnnotationImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#T!getText,T!getTextFormat,S!super.eGet#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getExtensionValues,P!getWrapper,S!super.eGet,T!getExtensionDefinitions,T!getDocumentation,T!getId,T!getAnyAttribute#]
out[] = bbrodt/bpmn2#eGet#CorrelationPropertyImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#T!getStructureRef,S!super.eGet,T!getCorrelationPropertyRetrievalExpression,T!getName#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getWrapper,S!super.eGet,T!getAny,T!getDocumentation,T!getId,T!getAnyAttribute#]
out[] = bbrodt/bpmn2#eUnset#BPMNLabelImpl#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eUnset,T!setLabelStyle#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eUnset,T!setBounds#]
out[] = bbrodt/bpmn2#eUnset#DataInputImpl#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eUnset,P!clear,T!getInputSetWithWhileExecuting,T!setIsCollection,T!getInputSetRefs,T!setName,T!getInputSetWithOptional#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eUnset,T!setItemSubjectRef,T!setDataState#]
out[] = bbrodt/bpmn2#getChildFeature#FlowElementItemProvider#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getChildFeature#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getChildFeature#]
out[] = bbrodt/bpmn2#eStaticClass#AssociationImpl#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!getAssociation#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getArtifact#]
out[] = bbrodt/bpmn2#eIsSet#ItemAwareElementImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eIsSet#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!equals,S!super.eIsSet,P!isEmpty#]
out[] = bbrodt/bpmn2#getPropertyDescriptors#IntermediateThrowEventItemProvider#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getPropertyDescriptors#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getPropertyDescriptors,T!addEventDefinitionRefsPropertyDescriptor#]
out[] = bbrodt/bpmn2#getChildFeature#ParticipantItemProvider#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getChildFeature#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getChildFeature#]
out[] = bbrodt/bpmn2#eStaticClass#InputOutputSpecificationImpl#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!getInputOutputSpecification#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getBaseElement#]
out[] = bbrodt/bpmn2#collectNewChildDescriptors#MultiInstanceLoopCharacteristicsItemProvider#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!add,P!getMultiInstanceLoopCharacteristics_LoopDataOutput,T!createChildParameter,P!createProperty,P!getMultiInstanceLoopCharacteristics_LoopDataInput,P!createFormalExpression,S!super.collectNewChildDescriptors,P!getMultiInstanceLoopCharacteristics_ComplexBehaviorDefinition,P!createExpression,P!createDataOutput,P!getMultiInstanceLoopCharacteristics_CompletionCondition,P!createComplexBehaviorDefinition,P!getMultiInstanceLoopCharacteristics_InputDataItem,P!getMultiInstanceLoopCharacteristics_OutputDataItem,P!getMultiInstanceLoopCharacteristics_LoopCardinality,P!createDataInput#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.collectNewChildDescriptors#]
out[] = bbrodt/bpmn2#getChildFeature#GlobalTaskItemProvider#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getChildFeature#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getChildFeature#]
out[] = bbrodt/bpmn2#eSet#PartnerEntityImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eSet,T!setName#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getDocumentations,P!set,T!getAny,P!addAll,S!super.eSet,P!clear,T!setId,T!getAnyAttribute#]
out[] = bbrodt/bpmn2#getChildrenFeatures#LaneSetItemProvider#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#P!add,S!super.getChildrenFeatures#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!add,S!super.getChildrenFeatures#]
out[] = bbrodt/bpmn2#getText#RenderingItemProvider#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#P!getId,T!getString,P!length#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getId,T!getString,P!length#]
out[] = bbrodt/bpmn2#getText#LabeledEdgeItemProvider#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#P!getId,T!getString,P!length#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getId,T!getString,P!length#]
out[] = bbrodt/bpmn2#toString#EscalationImpl#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#P!toString,P!append,T!eIsProxy,S!super.toString#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!toString,P!append,T!eIsProxy,S!super.toString#]
out[] = bbrodt/bpmn2#eGet#ScriptTaskImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eGet,T!getScript,T!getScriptLanguage#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getDataInputAssociation,T!getPerformerGroup,T!getLoopCharacteristicsGroup,P!getWrapper,T!getProperty,S!super.eGet,T!isIsForCompensation,T!getLoopCharacteristics,T!getDataOutputAssociation,T!getDefault,T!getPerformer,T!getIoSpecification#]
out[] = bbrodt/bpmn2#eSet#ChoreographyImpl#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!set,T!getParticipant,T!getFlowElementGroup,P!addAll,S!super.eSet,P!clear,T!getFlowElement#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!setIoSpecification,P!addAll,S!super.eSet,P!clear,T!getIoBinding,T!setName,T!getInterfaceRef#]
out[] = bbrodt/bpmn2#getChildFeature#LaneItemProvider#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getChildFeature#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getChildFeature#]
out[] = bbrodt/bpmn2#eUnset#DataOutputImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eUnset,T!setStructureDefinitionRef,T!setName#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eUnset,T!getAny,P!clear,T!getDocumentation,T!setId,T!getAnyAttribute#]
out[] = bbrodt/bpmn2#eGet#CallConversationImpl#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eGet,T!getCalledElementRef,T!getParticipantAssociation#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eGet,T!getParticipantRef,T!getName#]
out[] = bbrodt/bpmn2#notifyChanged#MessageFlowAssociationItemProvider#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.notifyChanged,P!getFeatureID,P!getNotifier,T!fireNotifyChanged,T!updateChildren#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.notifyChanged,P!getFeatureID,P!getNotifier,T!fireNotifyChanged,T!updateChildren#]
out[] = bbrodt/bpmn2#getChildrenFeatures#AssignmentItemProvider#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#P!add,S!super.getChildrenFeatures#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!add,S!super.getChildrenFeatures#]
out[] = bbrodt/bpmn2#eSet#TextAnnotationImpl#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.eSet,T!setText#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!set,T!getAny,P!addAll,S!super.eSet,P!clear,T!getDocumentation,T!setId,T!getAnyAttribute#]
out[] = bbrodt/bpmn2#eGet#MultiInstanceLoopCharacteristicsImpl#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!getOutputDataItem,T!getBehavior,T!getLoopDataInput,S!super.eGet,T!isIsSequential,T!getLoopDataOutput,T!getComplexBehaviorDefinition,T!getCompletionCondition,T!getLoopCardinality,T!getOneBehaviorEventRef,T!getInputDataItem,T!getNoneBehaviorEventRef#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getDocumentations,P!getWrapper,S!super.eGet,T!getAny,T!getId,T!getAnyAttribute#]
out[] = srisatish/openjdk#close#TwoStacksPlainDatagramSocketImpl#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#T!datagramSocketClose#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!datagramSocketClose#]
out[] = srisatish/openjdk#getClosedIcon#JTreeTableCellRenderer#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.getClosedIcon#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#XFillSpans#X11TracingRenderer#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.XFillSpans,P!tracePrimitive#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#disposeImpl#WFileDialogPeer#0202=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!targetDisposedPeer,T!_dispose#]#[,#!BOTH#!BLOCK#NONE#!BUS#P!get,P!removeDisplayChangedListener,S!super.disposeImpl,P!targetToAppContext,T!getGraphicsConfiguration,P!getDevice,P!remove#]
out[] = srisatish/openjdk#getSupportedSourceVersion#TestFatalityOfParseErrors#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!latest#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getAnnotation,P!getName,P!value,P!printMessage,T!isInitialized,P!getMessager,T!getClass#]
out[] = srisatish/openjdk#codeOperation#DivideExpression#2001=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!add,P!getTypeCodeOffset#]#[CompilerError#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#initialize#java_awt_GridBagLayout_PersistenceDelegate#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!get,T!invokeStatement,P!nextElement,P!getExceptionListener,P!keys,P!getPrivateField,S!super.initialize,P!hasMoreElements#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!initBean,P!getClass,S!super.initialize#]
out[] = srisatish/openjdk#read#JitterStream#2001=3#[,#!NONE#!MODIFIER#NONE#!BUS#T!fillBuffer,T!available#]#[IndexOutOfBoundsException,NullPointerException#!NONE#!MODIFIER#NONE#!BUS#T!read#]
out[] = srisatish/openjdk#getDisplayedMnemonicIndex#DefaultRGBChooserPanel#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!getInt#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#clientClosed#RMIJRMPServerImplSub#2212=3#[,#!NONE#!MODIFIER#OUT#!CONSOLE#T!waitForBlock,S!super.clientClosed,P!setName,P!flush,P!start,P!println#]#[NullPointerException#!BOTH#!BLOCK#NONE#!BUS#T!closeClient,P!hasNext,P!get,P!debugOn,P!iterator,P!trace,P!next,P!getConnectionId,T!dropDeadReferences,P!remove,P!connectionClosed#]
out[] = srisatish/openjdk#skip#ByteArrayInputStream#0102=3#[,#!BOTH#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!min,T!read#]
out[] = srisatish/openjdk#getPreferredSize#DefaultTextField#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!getFont,P!getPreferredSize,S!super.getPreferredSize#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getColumnWidth,T!getInsets,S!super.getPreferredSize#]
out[] = srisatish/openjdk#getMaximumSize#BasicTableUI#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!getMaxWidth,P!nextElement,T!createTableSize,P!getColumns,P!getColumnModel,P!hasMoreElements#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getPreferredSize#]
out[] = srisatish/openjdk#addNotify#TextField#0101=1#[,#!BOTH#!BLOCK#NONE#!BUS#P!createTextField,T!getToolkit,S!super.addNotify,T!getTreeLock#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!enableInputMethodsIfNecessary,S!super.addNotify#]
out[] = srisatish/openjdk#encodeLinePrefix#HexDumpEncoder#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!hexDigit,P!print#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#setPropertiesFromAttributes#ListView#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#T!getStyleSheet,T!getAttributes,P!getListPainter,S!super.setPropertiesFromAttributes#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getAttribute,P!getBoxPainter,T!getStyleSheet,P!getInset,P!getViewAttributes,T!setInsets#]
out[] = srisatish/openjdk#getChannel#SoftShortMessage#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!getStatus#]
out[] = srisatish/openjdk#getBorderInsets#MarginBorder#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!getMargin#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#paint#SynthInternalFrameUI#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!paint,T!getContext,P!dispose#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = srisatish/openjdk#insertUpdate#TextLayoutStrategy#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.insertUpdate,T!sync#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!repaint,P!getContainer,T!addDamage,P!getOffset,P!preferenceChanged#]
out[] = srisatish/openjdk#createChild#IntegerInterleavedRaster#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#T!createWritableChild#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!createWritableChild#]
out[] = srisatish/openjdk#decrypt#DesCbcCrcEType#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#T!decrypt#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!decrypt,T!keySize#]
out[] = srisatish/openjdk#accept#TypeVar#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!visitTypeVar#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!visitType#]
out[] = srisatish/openjdk#update#MultiToolBarUI#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#P!size,P!update,P!elementAt#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getWidth,T!paint,P!getBackground,P!setColor,P!getHeight,P!fillRect,P!isOpaque#]
out[] = ceylon/ceylon-compiler#documentation#RootDocImpl#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!getName,P!error,P!openInputStream,T!readHTMLDocumentation,P!length,T!getOverviewPath#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = ceylon/ceylon-compiler#visitBinary#PrettyToRetrievePositions#2002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.visitBinary,T!storePositions#]#[UncheckedIOException#!NONE#!MODIFIER#NONE#!BUS#T!close,P!opPrec,T!open,T!operatorName,P!getTag,T!print,T!printExpr#]
out[] = ceylon/ceylon-compiler#getValue#Compound#2000=2#[,#!NONE#!MODIFIER#NONE#!BUS#,#]#[UnsupportedOperationException#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = ceylon/ceylon-compiler#getFileForOutput#ExceptionalFileManager#1002=3#[IllegalArgumentException#!NONE#!MODIFIER#NONE#!BUS#,#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getFileForOutput#]
out[] = ceylon/ceylon-compiler#visitCase#TreeScanner#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#T!scan#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!visitTree#]
out[] = ceylon/ceylon-compiler#visitExec#PrettyToRetrievePositions#2003=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.visitExec,T!storePositions#]#[UncheckedIOException#!NONE#!MODIFIER#NONE#!BUS#T!print,T!printExpr#]
out[] = ceylon/ceylon-compiler#visitVarDef#PostAttrAnalyzer#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.visitVarDef,T!initTypeIfNeeded#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!scan#]
out[] = gnodet/activiti#sourceInputStream#BpmnParse#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.sourceInputStream#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!setStreamSource,T!name#]
out[] = ceylon/ceylon-compiler#to#EndPosParser#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!endPos,T!storeEnd#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = kub/gmf-test#notifyChanged#SubNodeItemProvider#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.notifyChanged,T!updateChildren#]#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.notifyChanged,P!getFeatureID,P!getNotifier,T!fireNotifyChanged,T!updateChildren#]
out[] = weblabdeusto/weblabdeusto#initialize#MobileWlDeustoLogicBasedBoard#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!add#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = mbardea/umlet#setAdditionalAttributes#Relation#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!size,T!getLinePoints,P!add,P!parseInt,P!elementAt,P!decomposeStringsIncludingEmptyStrings#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = kub/gmf-test#getCreateRelationshipCommand#NodeItemSemanticEditPolicy#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!getCompleteCreateRelationshipCommand,T!getStartCreateRelationshipCommand,S!super.getCreateRelationshipCommand,P!getTarget#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = weblabdeusto/weblabdeusto#initialize#WlDeustoGpibBoard#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!getFormPanel,P!add,P!setFileInfo#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = weblabdeusto/weblabdeusto#start#LogicExperiment#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!turnOffLight,P!setCellVerticalAlignment,P!getWidget,P!parseStrict,P!stringValue,P!setUrl,T!sendCommand,P!add,P!getImageResourceWeb,P!setCellHorizontalAlignment,P!getRowsColumnPairs,T!getFormatedInputLabel,P!setWidget,P!get,P!addClickHandler,P!getRow,P!isString,P!setVisible,P!getColumn,P!isObject,P!setStyleName,P!addStyleName,P!start,P!setText#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = mbardea/umlet#setStopElement#While#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.setStopElement,T!getGraphics,T!getHandler#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!inc_row,T!getLastRow,P!exchangeElementOrInsert#]
out[] = JACS-SKE/eXceedVoteServer#format#LineSeparatorPatternConverter#0003=3#[,#!NONE#!MODIFIER#NONE#!BUS#P!append#]#[,#!NONE#!MODIFIER#NONE#!BUS#T!format#]
out[] = JACS-SKE/eXceedVoteServer#finalizeConverter#MyPatternParser#0002=2#[,#!NONE#!MODIFIER#NONE#!BUS#S!super.finalizeConverter,T!addConverter,P!setLength#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!toString,P!error,T!extractPrecisionOption,T!addConverter,P!instantiateByClassName,P!equalsIgnoreCase,T!extractOption,P!setLength#]
out[] = eclipse/webtools.sourceediting#createPartition#StructuredTextPartitionerForHTML#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#T!getStylePartitionType,T!getScriptingPartitionType,P!getRegionAtCharacterOffset,S!super.createPartition#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = eclipse/webtools.sourceediting#getModelPreferences#HTMLFilesPreferencePage#0000=0#[,#!NONE#!MODIFIER#NONE#!BUS#P!getDefault,P!getPluginPreferences#]#[,#!NONE#!MODIFIER#NONE#!BUS#P!getDefault,P!getPluginPreferences#]
out[] = eclipse/webtools.sourceediting#getTerminators#HedLI#0001=1#[,#!NONE#!MODIFIER#NONE#!BUS#P!asList,P!iterator#]#[,#!NONE#!MODIFIER#NONE#!BUS#,#]
out[] = eclipse/webtools.s
... remaining output not shown, please
download output.
Compilation
Status: Finished
Started: Wed, 07 Mar 2018 15:04:12 -0600
Finished: Wed, 07 Mar 2018 15:04:27 -0600 (15s)
Execution
Status: Finished
Started: Wed, 07 Mar 2018 15:04:35 -0600
Finished: Wed, 07 Mar 2018 16:39:00 -0600 (1h 34m 25s)