Public Information for Job 66382

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)