diff --git a/examples/callgraph/java-maven-minimal/.debricked/soot-wrapper.jar b/examples/callgraph/java-maven-minimal/.debricked/soot-wrapper.jar new file mode 100644 index 00000000..57c5c17c Binary files /dev/null and b/examples/callgraph/java-maven-minimal/.debricked/soot-wrapper.jar differ diff --git a/examples/callgraph/java-maven-minimal/.debrickedTmpFolder/commons-lang3-3.14.0.jar b/examples/callgraph/java-maven-minimal/.debrickedTmpFolder/commons-lang3-3.14.0.jar new file mode 100644 index 00000000..da9302ff Binary files /dev/null and b/examples/callgraph/java-maven-minimal/.debrickedTmpFolder/commons-lang3-3.14.0.jar differ diff --git a/examples/callgraph/java-maven-minimal/CALLGRAPH_OUTPUT.md b/examples/callgraph/java-maven-minimal/CALLGRAPH_OUTPUT.md new file mode 100644 index 00000000..9469803e --- /dev/null +++ b/examples/callgraph/java-maven-minimal/CALLGRAPH_OUTPUT.md @@ -0,0 +1,183 @@ +# Callgraph Output Analysis + +This document explains the `debricked-call-graph.java` file generated by running the sample project. + +## Output Format + +The callgraph output is a **JSON file** containing the complete static call graph for the Java project. + +### Top-level Structure + +```json +{ + "version": "5", + "data": [ + [ /* method entry 1 */ ], + [ /* method entry 2 */ ], + ... + ] +} +``` + +### Method Entry Format + +Each method in the `data` array is represented as: + +``` +[ + methodSignature, // 0: Full method signature + isUserCode, // 1: Boolean - is this user-written (true) or library (false) + isNative, // 2: Boolean - is this a native method + className, // 3: Class name + sourceFile, // 4: Source file path + lineNumber, // 5: Method definition line number + unknown, // 6: Unused field (-1) + callers // 7: Array of caller entries +] +``` + +### Caller Entry Format + +Each caller in the method's `callers` array is: + +``` +[ + callerMethodSignature, // Who calls this method + callLineNumber, // At which line they call it + unknown // Direction marker ("-") +] +``` + +## Example: Tracing a Call Path + +From the sample app, here's how to trace a call: + +**App.main() calls OrderService.placeOrder():** + +```json +"com.example.callgraph.OrderService.placeOrder(String, int, double)" → [ + // ... other fields ... + [ + [ + "com.example.callgraph.App.main(String[])", // Called by App.main + 8, // At line 8 + "-" + ] + ] +] +``` + +**OrderService.placeOrder() calls PricingService.calculateTotal():** + +```json +"com.example.callgraph.PricingService.calculateTotal(int, double)" → [ + // ... other fields ... + [ + [ + "com.example.callgraph.OrderService.placeOrder(String, int, double)", + 11, // At line 11 + "-" + ] + ] +] +``` + +**PricingService.calculateTotal() calls applyDiscount():** + +```json +"com.example.callgraph.PricingService.applyDiscount(double)" → [ + // ... other fields ... + [ + [ + "com.example.callgraph.PricingService.calculateTotal(int, double)", + 6, // At line 6 + "-" + ] + ] +] +``` + +## Full Call Chain in Sample + +``` +App.main(String[]) + ↓ (line 5) + PricingService.() + +App.main(String[]) + ↓ (line 6) + OrderService.(PricingService) + +App.main(String[]) + ↓ (line 8) + OrderService.placeOrder(String, int, double) + ↓ (line 11) + PricingService.calculateTotal(int, double) + ↓ (line 6) + PricingService.applyDiscount(double) + +App.main(String[]) + ↓ (line 9) + LoggerUtil.log(String) + ↓ (line 10) + StringUtils.upperCase(String) + ↓ (line 9348) + String.toUpperCase() +``` + +## Key Fields Explained + +| Field | Meaning | Example | +|-------|---------|---------| +| `methodSignature` | Full qualified method with params | `com.example.callgraph.App.main(String[])` | +| `isUserCode` | `true` for app code, `false` for libraries/JDK | `true` for our classes, `false` for JDK | +| `isNative` | `true` for native methods | `true` for `Object.registerNatives()` | +| `className` | Fully qualified class name | `com.example.callgraph.App` | +| `sourceFile` | Relative path to .java file or `-` for JDK | `com/example/callgraph/App.java` | +| `lineNumber` | Line where method is defined | `4` | +| `callers[i][0]` | Method that calls this method | Same signature format | +| `callers[i][1]` | Line number of the call site | `8` | + +## Understanding the Data Flow + +1. **Find a method** by searching for its signature in the data array +2. **See who calls it** by looking at the `callers` field (index 7) +3. **Find those callers** by searching for them in the data array +4. **Repeat** to build the full call chain + +## Practical Use Cases + +### Find all methods called from App.main() + +Search for `"com.example.callgraph.App.main(String[])"` then extract caller entries where `App.main` appears in the callers. + +### Find all methods that call a specific method + +Search the data array and look for methods that have the target method in their callers list. + +### Identify library usage + +Look for methods with `isUserCode: false` to understand which external libraries/JDK methods are being called. + +### Analyze reachability + +Starting from `main()`, trace through all callers recursively to find all reachable methods. + +## Soot Analysis Details + +This callgraph was generated by **Soot** version 5.1, a static Java bytecode analysis framework that: + +- Analyzes `.class` files (compiled Java bytecode) +- Builds a static call graph without running the code +- Includes both library and user code in the graph +- Works at the bytecode level, so can find method calls not obvious in source code + +The wrapper processes: +- **User code**: From `target/classes/` (your compiled app) +- **Library code**: From `.debrickedTmpFolder/` (Maven dependencies) +- **JDK**: Auto-included in analysis + +## File Size Note + +The JSON can be quite large (especially with many dependencies) because it includes the complete transitive closure of all method calls, including deep library internals. + diff --git a/examples/callgraph/java-maven-minimal/README.md b/examples/callgraph/java-maven-minimal/README.md new file mode 100644 index 00000000..dd6071ab --- /dev/null +++ b/examples/callgraph/java-maven-minimal/README.md @@ -0,0 +1,280 @@ +# Java Maven Callgraph Sample + +This sample is a minimal Java 11 Maven app that demonstrates static call graph generation using Debricked CLI and Soot. It provides a complete working example of how to generate, analyze, and understand Java call graphs. + +## What this sample does + +- Builds Java bytecode into `target/classes` +- Uses an external dependency (`commons-lang3`) for realistic dependency analysis +- Creates clear method-call edges for demonstration: + - `App.main → OrderService.placeOrder` + - `OrderService.placeOrder → PricingService.calculateTotal` + - `PricingService.calculateTotal → PricingService.applyDiscount` + - `App.main → LoggerUtil.log` + - `LoggerUtil.log → StringUtils.upperCase` (external library call) + +## Project Layout + +``` +. +├── pom.xml Maven configuration +├── src/main/java/com/example/callgraph/ +│ ├── App.java Entry point with main() +│ ├── OrderService.java Orchestrates pricing logic +│ ├── PricingService.java Calculates totals & discounts +│ └── LoggerUtil.java Logs using commons-lang3 +├── run-callgraph.sh Automated build & generation +├── setup-prerequisites.sh Checks Java/Maven/Debricked +├── analyze-callgraph.sh Analyzes generated callgraph +├── CALLGRAPH_OUTPUT.md Output format documentation +└── README.md This file +``` + +## Prerequisites + +Required tools: +- **Java 11 or higher** - for compiling and callgraph analysis +- **Maven** - for building the Java project +- **Debricked CLI** - for generating the callgraph + +### Check prerequisites + +```bash +cd /home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-minimal +bash setup-prerequisites.sh +``` + +This script checks which tools are installed and provides OS-specific installation instructions if needed. + +## Quick Start + +### Automated (recommended) + +```bash +cd /home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-minimal +bash run-callgraph.sh +``` + +The script will: +1. ✓ Verify Java 11+ is installed +2. ✓ Build the Maven project (`mvn package`) +3. ✓ Copy external dependencies +4. ✓ Generate the callgraph +5. ✓ Verify the output artifact + +### Manual steps + +```bash +cd /home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-minimal + +# Build the project +mvn package -q -DskipTests + +# Copy Maven dependencies to .debrickedTmpFolder +mvn -q -B dependency:copy-dependencies -DoutputDirectory=./.debrickedTmpFolder + +# Generate callgraph (option 1: no rebuild) +debricked callgraph --no-build + +# Or let debricked rebuild first (option 2: auto-build) +debricked callgraph +``` + +## Generated Artifacts + +After running the scripts, you'll see: + +| File/Folder | Purpose | +|------------|---------| +| `debricked-call-graph.java` | **Main output**: JSON callgraph with all method relationships | +| `.debrickedTmpFolder/` | Maven dependencies (e.g., `commons-lang3-3.14.0.jar`) | +| `target/classes/` | Compiled `.class` files from Maven build | + +## Understanding the Output + +### Callgraph Statistics + +``` +Total Methods: 29 + - User Code: 9 + - Library/JDK: 20 +``` + +### User Code Methods + +``` +com.example.callgraph.App.main(String[]) +com.example.callgraph.OrderService.placeOrder(String, int, double) +com.example.callgraph.OrderService.(PricingService) +com.example.callgraph.PricingService.calculateTotal(int, double) +com.example.callgraph.PricingService.applyDiscount(double) +com.example.callgraph.PricingService.() +com.example.callgraph.LoggerUtil.log(String) +com.example.callgraph.LoggerUtil.() +com.example.callgraph.App.() +``` + +### Analyze the Callgraph + +```bash +bash analyze-callgraph.sh debricked-call-graph.java +``` + +Output includes: +- Total method count +- User code vs. library breakdown +- All user-written methods +- Most-called methods (library internals) + +### Output Format + +The `debricked-call-graph.java` is a **JSON document** with structure: + +```json +{ + "version": "5", + "data": [ + [ + "com.example.callgraph.App.main(String[])", // Method signature + true, // Is user code? + false, // Is native? + "com.example.callgraph.App", // Class name + "com/example/callgraph/App.java", // Source file + 4, // Line number + -1, // Unused + [ // Callers array + ["com.example.callgraph.OrderService.placeOrder(...)", 8, "-"] + ] + ] + // ... more methods ... + ] +} +``` + +For complete format documentation, see **`CALLGRAPH_OUTPUT.md`**. + +## Technology: Soot Framework + +The callgraph is generated by **Soot 5.1**, a static Java bytecode analysis framework: + +- **Analyzes** compiled `.class` files (not source code) +- **Builds** a static call graph without executing the code +- **Includes** library and JDK code in the graph +- **Works** at the bytecode level for precision + +### Processing Flow + +``` +Java Source Code + ↓ (mvn package) +Compiled .class Files (target/classes/) + ↓ (SootWrapper.jar) +Static Call Graph (debricked-call-graph.java) + ↓ (analyze-callgraph.sh) +Analysis & Visualization +``` + +## Example: Tracing a Call Path + +Looking at the call chain in the JSON: + +**How App.main calls LoggerUtil.log:** + +``` +App.main() line 9 calls LoggerUtil.log() + ↓ +LoggerUtil.log() line 10 calls StringUtils.upperCase() + ↓ +StringUtils.upperCase() line 9348 calls String.toUpperCase() +``` + +This shows how even a simple logging call transitively uses multiple library methods. + +## Troubleshooting + +### Build fails + +```bash +mvn clean package -q -DskipTests -e +``` + +Check that Java 11+ is installed and available. + +### Callgraph not generated + +Verify `.class` files were created: +```bash +find target/classes -name "*.class" +``` + +Verify dependencies were copied: +```bash +ls -la .debrickedTmpFolder/ +``` + +Re-run callgraph generation: +```bash +/path/to/debricked callgraph --no-build +``` + +### File not found errors + +Ensure you're running from the sample directory: +```bash +cd /home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-minimal +pwd # Verify current directory +bash run-callgraph.sh +``` + +### Need more details + +See related documentation: +- `CALLGRAPH_OUTPUT.md` - Output format explanation +- `internal/callgraph/language/java/README.md` - Debricked Java callgraph docs +- Soot documentation: https://github.com/soot-oss/soot + +## Use Cases + +This sample demonstrates: + +- ✓ **Building Java projects** with Maven +- ✓ **Generating static call graphs** using Debricked +- ✓ **Analyzing call relationships** between methods +- ✓ **Understanding library integration** through call paths +- ✓ **Identifying reachability** from entry points +- ✓ **Detecting call patterns** in complex code + +## Next Steps + +- **Integrate into CI/CD**: Add `debricked callgraph` to your pipeline +- **Analyze larger projects**: Use this template for real applications +- **Parse the JSON**: Build tools to process the callgraph output +- **Combine with vulnerability analysis**: Use callgraph for reachability analysis of CVEs +- **Explore Soot options**: Check Soot documentation for advanced analysis modes + +## Files Reference + +| File | Lines | Purpose | +|------|-------|---------| +| `pom.xml` | 36 | Maven project configuration | +| `src/main/java/com/example/callgraph/App.java` | 11 | Entry point with main() | +| `src/main/java/com/example/callgraph/OrderService.java` | 13 | Service orchestrating pricing | +| `src/main/java/com/example/callgraph/PricingService.java` | 11 | Pricing logic with discount | +| `src/main/java/com/example/callgraph/LoggerUtil.java` | 12 | Logging using commons-lang3 | +| `run-callgraph.sh` | 70+ | Automated build & generation | +| `setup-prerequisites.sh` | 119 | Dependency checker | +| `analyze-callgraph.sh` | 80+ | JSON callgraph analyzer | +| `CALLGRAPH_OUTPUT.md` | 200+ | Output format documentation | + +## Support + +For issues or questions: +1. Check `CALLGRAPH_OUTPUT.md` for output format details +2. Review `setup-prerequisites.sh` output for missing dependencies +3. Run with verbose flags: `debricked callgraph --help` +4. Check the main Debricked repo documentation + +--- + +**Happy call graph analysis!** 📊✨ + diff --git a/examples/callgraph/java-maven-minimal/analyze-callgraph.sh b/examples/callgraph/java-maven-minimal/analyze-callgraph.sh new file mode 100755 index 00000000..f70aafd7 --- /dev/null +++ b/examples/callgraph/java-maven-minimal/analyze-callgraph.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +# Callgraph Parser and Analyzer Script +# This script helps analyze the generated debricked-call-graph.java file + +CALLGRAPH_FILE="${1:-debricked-call-graph.java}" + +if [ ! -f "$CALLGRAPH_FILE" ]; then + echo "ERROR: Callgraph file not found: $CALLGRAPH_FILE" + exit 1 +fi + +echo "==========================================" +echo "Callgraph Analysis" +echo "==========================================" +echo "" + +# Check for jq (JSON processor) +if ! command -v jq &> /dev/null; then + echo "⚠ Note: jq is not installed. For JSON parsing, install with:" + echo " sudo apt-get install jq # Linux" + echo " brew install jq # macOS" + echo "" + echo "Basic statistics without jq:" + echo "" +fi + +# Count methods +METHOD_COUNT=$(grep -o '"[^"]*"' "$CALLGRAPH_FILE" | grep -c '\[') +echo "Callgraph File: $CALLGRAPH_FILE" +echo "File Size: $(ls -lh "$CALLGRAPH_FILE" | awk '{print $5}')" +echo "" + +if command -v jq &> /dev/null; then + echo "=== JSON Analysis ===" + echo "" + + # Parse with jq + TOTAL_METHODS=$(jq '.data | length' "$CALLGRAPH_FILE") + echo "Total Methods: $TOTAL_METHODS" + + USER_CODE=$(jq '[.data[] | select(.[1] == true)] | length' "$CALLGRAPH_FILE") + LIBRARY_CODE=$(jq '[.data[] | select(.[1] == false)] | length' "$CALLGRAPH_FILE") + + echo " - User Code Methods: $USER_CODE" + echo " - Library/JDK Methods: $LIBRARY_CODE" + echo "" + + # Find entry points (methods in user code with no callers or few callers) + echo "=== User-Code Methods ===" + jq -r '.data[] | select(.[1] == true) | .[0]' "$CALLGRAPH_FILE" | head -20 + echo "" + + # Show methods that are most called (highest connectivity) + echo "=== Most Called Methods (Top 10) ===" + jq '[.data[] | {method: .[0], callerCount: (.[7] | length)}] | sort_by(-.callerCount) | .[0:10] | .[] | "\(.callerCount) callers: \(.method)"' -r "$CALLGRAPH_FILE" + echo "" + +else + echo "=== Without jq (basic analysis) ===" + echo "" + + # Simple grep-based analysis + TOTAL=$(grep -o '\["com\.' "$CALLGRAPH_FILE" | wc -l) + echo "Methods starting with 'com.': $TOTAL" + + echo "" + echo "Sample methods found:" + grep -o '"[^"]*com\.example\.callgraph[^"]*"' "$CALLGRAPH_FILE" | sort -u | head -10 + +fi + +echo "" +echo "==========================================" +echo "For detailed analysis, see CALLGRAPH_OUTPUT.md" +echo "==========================================" + diff --git a/examples/callgraph/java-maven-minimal/pom.xml b/examples/callgraph/java-maven-minimal/pom.xml new file mode 100644 index 00000000..98305d50 --- /dev/null +++ b/examples/callgraph/java-maven-minimal/pom.xml @@ -0,0 +1,35 @@ + + 4.0.0 + + com.example.callgraph + java-maven-minimal + 1.0.0 + java-maven-minimal + + + 11 + 11 + UTF-8 + + + + + org.apache.commons + commons-lang3 + 3.14.0 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + + + + diff --git a/examples/callgraph/java-maven-minimal/run-callgraph.sh b/examples/callgraph/java-maven-minimal/run-callgraph.sh new file mode 100755 index 00000000..b0ba8f5d --- /dev/null +++ b/examples/callgraph/java-maven-minimal/run-callgraph.sh @@ -0,0 +1,124 @@ +#!/bin/bash + +# Debricked Java Callgraph Sample - Automated Build & Generation Script +# This script runs the full flow described in the README: +# 1. Verify Java version +# 2. Build with Maven +# 3. Copy dependencies +# 4. Generate callgraph + +set -e + +SAMPLE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$SAMPLE_DIR" + +echo "================================" +echo "Debricked Java Callgraph Sample" +echo "================================" +echo "" + +# Step 1: Verify Java version +echo "[1/4] Checking Java version..." +if ! command -v java &> /dev/null; then + echo "ERROR: Java not found. Please install Java 11 or higher." + exit 1 +fi +java -version +echo "" + +# Step 2: Build Maven project +echo "[2/4] Building Maven project..." +if ! command -v mvn &> /dev/null; then + echo "ERROR: Maven not found. Please install Maven." + exit 1 +fi +mvn package -q -DskipTests -e +echo "✓ Maven build complete" +echo "" + +# Step 3: Copy dependencies +echo "[3/4] Copying external dependencies..." +mvn -q -B dependency:copy-dependencies -DoutputDirectory=./.debrickedTmpFolder -DskipTests -e +echo "✓ Dependencies copied to .debrickedTmpFolder/" +echo "" + +# Step 3b: Seed .debricked/soot-wrapper.jar so CLI does not attempt a network download +# The embedded jar in the repo supports Java 21+; for Java 11/17 the CLI would normally +# download a versioned jar from GitHub. We pre-seed it with the embedded jar to keep +# this sample fully offline. +SOOT_JAR_DIR="$SAMPLE_DIR/.debricked" +SOOT_JAR_PATH="$SOOT_JAR_DIR/soot-wrapper.jar" +REPO_ROOT_JAR="$(cd "$SAMPLE_DIR/../../.." && pwd)/internal/callgraph/language/java/soot-wrapper.jar" +if [ ! -f "$SOOT_JAR_PATH" ]; then + echo "Seeding .debricked/soot-wrapper.jar from repo..." + mkdir -p "$SOOT_JAR_DIR" + if [ -f "$REPO_ROOT_JAR" ]; then + cp "$REPO_ROOT_JAR" "$SOOT_JAR_PATH" + echo "✓ soot-wrapper.jar seeded from repo" + else + echo "⚠ Could not find soot-wrapper.jar at $REPO_ROOT_JAR" + echo " The CLI will attempt to download it from GitHub (requires internet access)" + fi +fi +echo "" + +# Step 4: Generate callgraph +echo "[4/4] Generating callgraph..." + +# Try to find debricked in PATH, or use local repo binary +DEBRICKED_CMD="debricked" +if ! command -v debricked &> /dev/null; then + # Try to find debricked binary in repo root + # Sample is at: examples/callgraph/java-maven-minimal + # Repo root is: ../../.. + REPO_ROOT="$(cd "$SAMPLE_DIR/../../.." && pwd)" + if [ -f "$REPO_ROOT/debricked" ]; then + DEBRICKED_CMD="$REPO_ROOT/debricked" + echo "Using debricked from: $DEBRICKED_CMD" + else + echo "ERROR: debricked CLI not found in PATH or at $REPO_ROOT/debricked" + echo "Please either:" + echo " 1. Add debricked to your PATH" + echo " 2. Build from repo root: cd $REPO_ROOT && go build -o debricked ./cmd/debricked" + exit 1 + fi +fi + +# Try with --no-build flag (assumes already built) +$DEBRICKED_CMD callgraph --no-build + +echo "" +echo "================================" +echo "Callgraph generation complete!" +echo "================================" +echo "" + +# Verify artifacts +if [ -f debricked-call-graph.java ]; then + FILE_SIZE=$(wc -c < debricked-call-graph.java) + echo "✓ Artifact created: debricked-call-graph.java" + echo " Size: $(ls -lh debricked-call-graph.java | awk '{print $5}')" + echo " Format: JSON callgraph data ($(echo "($FILE_SIZE / 1024)" | bc)KB)" + echo "" + echo " Sample output (first 200 chars):" + head -c 200 debricked-call-graph.java | sed 's/^/ /' + echo "" +else + echo "⚠ Expected artifact not found: debricked-call-graph.java" + echo " This may indicate an error in callgraph generation." + exit 1 +fi + +if [ -d .debrickedTmpFolder ]; then + DEPS_COUNT=$(find .debrickedTmpFolder -name "*.jar" 2>/dev/null | wc -l) + echo "✓ Dependencies folder: .debrickedTmpFolder/ (contains $DEPS_COUNT jars)" +fi + +echo "" +echo "✓ Sample complete! Callgraph successfully generated." +echo "" +echo "Next steps:" +echo " - Review the generated debricked-call-graph.java" +echo " - Parse the JSON to analyze call relationships" +echo " - See README.md for details" + diff --git a/examples/callgraph/java-maven-minimal/setup-prerequisites.sh b/examples/callgraph/java-maven-minimal/setup-prerequisites.sh new file mode 100755 index 00000000..f2d35346 --- /dev/null +++ b/examples/callgraph/java-maven-minimal/setup-prerequisites.sh @@ -0,0 +1,118 @@ +#!/bin/bash + +# Debricked Java Callgraph Sample - Prerequisites Setup Script +# This script checks and helps install required dependencies: +# - Java 11 or higher +# - Maven +# - Debricked CLI + +set -e + +SAMPLE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$SAMPLE_DIR" + +echo "================================" +echo "Prerequisites Check & Setup" +echo "================================" +echo "" + +# Detect OS +if [[ "$OSTYPE" == "linux-gnu"* ]]; then + OS="linux" + PKG_MANAGER="" + if command -v apt-get &> /dev/null; then + PKG_MANAGER="apt-get" + elif command -v yum &> /dev/null; then + PKG_MANAGER="yum" + fi +elif [[ "$OSTYPE" == "darwin"* ]]; then + OS="macos" + PKG_MANAGER="brew" +else + OS="unknown" +fi + +echo "Detected OS: $OS" +echo "" + +# Check Java +echo "[1/3] Checking Java..." +if command -v java &> /dev/null; then + JAVA_VERSION=$(java -version 2>&1 | grep -oP 'version "\K[0-9]+' | head -1) + echo "✓ Java is installed (version: $JAVA_VERSION)" + if [ "$JAVA_VERSION" -lt 11 ]; then + echo "⚠ WARNING: Java version is less than 11. Callgraph requires Java 11+." + fi +else + echo "✗ Java not found" + echo "" + if [ "$OS" == "linux" ]; then + echo "To install Java 11+, run:" + if [ "$PKG_MANAGER" == "apt-get" ]; then + echo " sudo apt-get update && sudo apt-get install -y openjdk-11-jdk" + elif [ "$PKG_MANAGER" == "yum" ]; then + echo " sudo yum install -y java-11-openjdk-devel" + fi + elif [ "$OS" == "macos" ]; then + echo "To install Java 11+, run:" + echo " brew install openjdk@11" + echo "Then add it to your PATH:" + echo " sudo ln -sfn /opt/homebrew/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk" + else + echo "Please visit https://www.oracle.com/java/technologies/downloads/ to install Java 11+" + fi + echo "" +fi + +# Check Maven +echo "[2/3] Checking Maven..." +if command -v mvn &> /dev/null; then + MVN_VERSION=$(mvn -v 2>&1 | grep "Apache Maven" | awk '{print $3}') + echo "✓ Maven is installed (version: $MVN_VERSION)" +else + echo "✗ Maven not found" + echo "" + if [ "$OS" == "linux" ]; then + echo "To install Maven, run:" + if [ "$PKG_MANAGER" == "apt-get" ]; then + echo " sudo apt-get update && sudo apt-get install -y maven" + elif [ "$PKG_MANAGER" == "yum" ]; then + echo " sudo yum install -y maven" + fi + elif [ "$OS" == "macos" ]; then + echo "To install Maven, run:" + echo " brew install maven" + else + echo "Please visit https://maven.apache.org/download.cgi to install Maven" + fi + echo "" +fi + +# Check Debricked CLI +echo "[3/3] Checking Debricked CLI..." +if command -v debricked &> /dev/null; then + DEBRICKED_VERSION=$(debricked version 2>&1 || echo "unknown") + echo "✓ Debricked CLI is installed (version: $DEBRICKED_VERSION)" +else + echo "✗ Debricked CLI not found" + echo "" + echo "To install Debricked CLI, visit:" + echo " https://github.com/debricked/cli/releases" + echo "" + echo "Or if building from this repo:" + echo " cd /home/dritthi/projects/debricked-projects/cli" + echo " go build -o debricked ./cmd/debricked" + echo " # Then add to PATH or use ./debricked directly" + echo "" +fi + +echo "" +echo "================================" +echo "Setup Check Complete" +echo "================================" +echo "" +echo "Next steps:" +echo "1. Install any missing prerequisites from instructions above" +echo "2. Run: bash run-callgraph.sh" +echo "" + diff --git a/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/App.java b/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/App.java new file mode 100644 index 00000000..a9804566 --- /dev/null +++ b/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/App.java @@ -0,0 +1,12 @@ +package com.example.callgraph; + +public class App { + public static void main(String[] args) { + PricingService pricingService = new PricingService(); + OrderService orderService = new OrderService(pricingService); + + String confirmation = orderService.placeOrder("book", 2, 24.99); + LoggerUtil.log(confirmation); + } +} + diff --git a/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/LoggerUtil.java b/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/LoggerUtil.java new file mode 100644 index 00000000..8c525e64 --- /dev/null +++ b/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/LoggerUtil.java @@ -0,0 +1,14 @@ +package com.example.callgraph; + +import org.apache.commons.lang3.StringUtils; + +public final class LoggerUtil { + private LoggerUtil() { + } + + public static void log(String message) { + String normalized = StringUtils.upperCase(message); + System.out.println("[APP] " + normalized); + } +} + diff --git a/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/OrderService.java b/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/OrderService.java new file mode 100644 index 00000000..80786c81 --- /dev/null +++ b/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/OrderService.java @@ -0,0 +1,15 @@ +package com.example.callgraph; + +public class OrderService { + private final PricingService pricingService; + + public OrderService(PricingService pricingService) { + this.pricingService = pricingService; + } + + public String placeOrder(String item, int quantity, double unitPrice) { + double total = pricingService.calculateTotal(quantity, unitPrice); + return "Order placed: " + item + " x" + quantity + " total=" + total; + } +} + diff --git a/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/PricingService.java b/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/PricingService.java new file mode 100644 index 00000000..12c5e5d0 --- /dev/null +++ b/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/PricingService.java @@ -0,0 +1,16 @@ +package com.example.callgraph; + +public class PricingService { + public double calculateTotal(int quantity, double unitPrice) { + double subtotal = quantity * unitPrice; + return applyDiscount(subtotal); + } + + private double applyDiscount(double subtotal) { + if (subtotal >= 50.0) { + return subtotal * 0.9; + } + return subtotal; + } +} + diff --git a/examples/callgraph/java-maven-minimal/target/classes/com/example/callgraph/App.class b/examples/callgraph/java-maven-minimal/target/classes/com/example/callgraph/App.class new file mode 100644 index 00000000..1633e626 Binary files /dev/null and b/examples/callgraph/java-maven-minimal/target/classes/com/example/callgraph/App.class differ diff --git a/examples/callgraph/java-maven-minimal/target/classes/com/example/callgraph/LoggerUtil.class b/examples/callgraph/java-maven-minimal/target/classes/com/example/callgraph/LoggerUtil.class new file mode 100644 index 00000000..2d5cb8f1 Binary files /dev/null and b/examples/callgraph/java-maven-minimal/target/classes/com/example/callgraph/LoggerUtil.class differ diff --git a/examples/callgraph/java-maven-minimal/target/classes/com/example/callgraph/OrderService.class b/examples/callgraph/java-maven-minimal/target/classes/com/example/callgraph/OrderService.class new file mode 100644 index 00000000..3adc5865 Binary files /dev/null and b/examples/callgraph/java-maven-minimal/target/classes/com/example/callgraph/OrderService.class differ diff --git a/examples/callgraph/java-maven-minimal/target/classes/com/example/callgraph/PricingService.class b/examples/callgraph/java-maven-minimal/target/classes/com/example/callgraph/PricingService.class new file mode 100644 index 00000000..b973bc2f Binary files /dev/null and b/examples/callgraph/java-maven-minimal/target/classes/com/example/callgraph/PricingService.class differ diff --git a/examples/callgraph/java-maven-minimal/target/java-maven-minimal-1.0.0.jar b/examples/callgraph/java-maven-minimal/target/java-maven-minimal-1.0.0.jar new file mode 100644 index 00000000..51fa9b16 Binary files /dev/null and b/examples/callgraph/java-maven-minimal/target/java-maven-minimal-1.0.0.jar differ diff --git a/examples/callgraph/java-maven-minimal/target/maven-archiver/pom.properties b/examples/callgraph/java-maven-minimal/target/maven-archiver/pom.properties new file mode 100644 index 00000000..682a2ccb --- /dev/null +++ b/examples/callgraph/java-maven-minimal/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Wed May 13 17:47:54 UTC 2026 +groupId=com.example.callgraph +artifactId=java-maven-minimal +version=1.0.0 diff --git a/examples/callgraph/java-maven-minimal/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/examples/callgraph/java-maven-minimal/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 00000000..a2915011 --- /dev/null +++ b/examples/callgraph/java-maven-minimal/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,4 @@ +com/example/callgraph/LoggerUtil.class +com/example/callgraph/PricingService.class +com/example/callgraph/App.class +com/example/callgraph/OrderService.class diff --git a/examples/callgraph/java-maven-minimal/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/examples/callgraph/java-maven-minimal/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 00000000..3bcde7d1 --- /dev/null +++ b/examples/callgraph/java-maven-minimal/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,4 @@ +/home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/App.java +/home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/OrderService.java +/home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/LoggerUtil.java +/home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-minimal/src/main/java/com/example/callgraph/PricingService.java diff --git a/examples/callgraph/java-maven-sootup/.debrickedTmpFolder/commons-lang3-3.14.0.jar b/examples/callgraph/java-maven-sootup/.debrickedTmpFolder/commons-lang3-3.14.0.jar new file mode 100644 index 00000000..da9302ff Binary files /dev/null and b/examples/callgraph/java-maven-sootup/.debrickedTmpFolder/commons-lang3-3.14.0.jar differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/pom.xml b/examples/callgraph/java-maven-sootup/SootUpWrapper/pom.xml new file mode 100644 index 00000000..53b015ac --- /dev/null +++ b/examples/callgraph/java-maven-sootup/SootUpWrapper/pom.xml @@ -0,0 +1,90 @@ + + + 4.0.0 + com.debricked.sootup + sootup-wrapper + 1.0.0 + SootUpWrapper + + Callgraph generator using SootUp — replaces SootWrapper (classic Soot). + Accepts the same CLI interface as SootWrapper.jar for drop-in comparison. + Algorithms: CHA (default) or RTA, selectable via -a flag. + + + 11 + 11 + UTF-8 + 1.3.0 + + + + + org.soot-oss + sootup.core + ${sootup.version} + + + + org.soot-oss + sootup.java.core + ${sootup.version} + + + + org.soot-oss + sootup.java.bytecode + ${sootup.version} + + + + org.soot-oss + sootup.callgraph + ${sootup.version} + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + + + org.apache.maven.plugins + maven-shade-plugin + 3.5.0 + + + package + + shade + + + false + + + com.debricked.sootup.SootUpWrapper + + + + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + + + + diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/BaseViewChangeListener.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/BaseViewChangeListener.class new file mode 100644 index 00000000..fa47b30f Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/BaseViewChangeListener.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/IdentifierFactory.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/IdentifierFactory.class new file mode 100644 index 00000000..e45917dd Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/IdentifierFactory.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/Language.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/Language.class new file mode 100644 index 00000000..d7fd35fb Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/Language.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/ViewChangeListener.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/ViewChangeListener.class new file mode 100644 index 00000000..7e81a327 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/ViewChangeListener.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/ClassCache.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/ClassCache.class new file mode 100644 index 00000000..65baf46d Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/ClassCache.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/FullCache.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/FullCache.class new file mode 100644 index 00000000..73e6802e Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/FullCache.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/LRUCache$1.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/LRUCache$1.class new file mode 100644 index 00000000..1a881319 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/LRUCache$1.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/LRUCache.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/LRUCache.class new file mode 100644 index 00000000..dbb30fd2 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/LRUCache.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/MutableClassCache.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/MutableClassCache.class new file mode 100644 index 00000000..c2fadf37 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/MutableClassCache.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/MutableFullCache.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/MutableFullCache.class new file mode 100644 index 00000000..78c9256a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/MutableFullCache.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/provider/ClassCacheProvider.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/provider/ClassCacheProvider.class new file mode 100644 index 00000000..21605c95 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/provider/ClassCacheProvider.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/provider/FullCacheProvider.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/provider/FullCacheProvider.class new file mode 100644 index 00000000..f41a9262 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/provider/FullCacheProvider.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/provider/LRUCacheProvider.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/provider/LRUCacheProvider.class new file mode 100644 index 00000000..85e6ccf2 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/provider/LRUCacheProvider.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/provider/MutableFullCacheProvider.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/provider/MutableFullCacheProvider.class new file mode 100644 index 00000000..02b017a0 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/cache/provider/MutableFullCacheProvider.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/AbstractClassSource.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/AbstractClassSource.class new file mode 100644 index 00000000..968900aa Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/AbstractClassSource.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/BodySource.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/BodySource.class new file mode 100644 index 00000000..d03617d2 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/BodySource.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/ClassProvider.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/ClassProvider.class new file mode 100644 index 00000000..3dc08d02 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/ClassProvider.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/OverridingBodySource.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/OverridingBodySource.class new file mode 100644 index 00000000..8203e303 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/OverridingBodySource.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/OverridingClassSource.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/OverridingClassSource.class new file mode 100644 index 00000000..887919ff Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/OverridingClassSource.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/ResolveException.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/ResolveException.class new file mode 100644 index 00000000..2b4136ca Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/ResolveException.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/SootClassSource.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/SootClassSource.class new file mode 100644 index 00000000..2445f404 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/frontend/SootClassSource.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/BackwardsStmtGraph.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/BackwardsStmtGraph.class new file mode 100644 index 00000000..c5ab340f Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/BackwardsStmtGraph.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/BasicBlock.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/BasicBlock.class new file mode 100644 index 00000000..86db7416 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/BasicBlock.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$1.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$1.class new file mode 100644 index 00000000..1327a1c6 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$1.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection$1.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection$1.class new file mode 100644 index 00000000..3b6d287a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection$1.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection$2.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection$2.class new file mode 100644 index 00000000..98e9eb11 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection$2.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection.class new file mode 100644 index 00000000..76ded2b6 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder$AnalysisDirection.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder.class new file mode 100644 index 00000000..cf394709 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceFinder.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceTree.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceTree.class new file mode 100644 index 00000000..3e66b930 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/DominanceTree.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ForwardingBasicBlock.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ForwardingBasicBlock.class new file mode 100644 index 00000000..c088634f Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ForwardingBasicBlock.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ForwardingStmtGraph.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ForwardingStmtGraph.class new file mode 100644 index 00000000..82b150c0 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ForwardingStmtGraph.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ImmutableBasicBlock.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ImmutableBasicBlock.class new file mode 100644 index 00000000..34fa227b Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ImmutableBasicBlock.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph$1.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph$1.class new file mode 100644 index 00000000..4f1c4bf1 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph$1.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph$ImmutableBasicBlock.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph$ImmutableBasicBlock.class new file mode 100644 index 00000000..2e764dbf Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph$ImmutableBasicBlock.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph.class new file mode 100644 index 00000000..304cea4a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ImmutableBlockStmtGraph.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/MutableBasicBlock.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/MutableBasicBlock.class new file mode 100644 index 00000000..387d4393 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/MutableBasicBlock.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/MutableBasicBlockImpl.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/MutableBasicBlockImpl.class new file mode 100644 index 00000000..ffb723c2 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/MutableBasicBlockImpl.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/MutableBlockStmtGraph.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/MutableBlockStmtGraph.class new file mode 100644 index 00000000..d6dde31c Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/MutableBlockStmtGraph.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/MutableStmtGraph.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/MutableStmtGraph.class new file mode 100644 index 00000000..864bd33d Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/MutableStmtGraph.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/PostDominanceFinder.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/PostDominanceFinder.class new file mode 100644 index 00000000..969f0e87 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/PostDominanceFinder.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal$BlockIterator$Frame.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal$BlockIterator$Frame.class new file mode 100644 index 00000000..8b58d5d9 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal$BlockIterator$Frame.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal$BlockIterator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal$BlockIterator.class new file mode 100644 index 00000000..52761331 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal$BlockIterator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal.class new file mode 100644 index 00000000..ace2bbb7 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/PostOrderBlockTraversal.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ReversePostOrderBlockTraversal$BlockIterator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ReversePostOrderBlockTraversal$BlockIterator.class new file mode 100644 index 00000000..278865c0 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ReversePostOrderBlockTraversal$BlockIterator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ReversePostOrderBlockTraversal.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ReversePostOrderBlockTraversal.class new file mode 100644 index 00000000..7146fdc1 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/ReversePostOrderBlockTraversal.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockGraphIterator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockGraphIterator.class new file mode 100644 index 00000000..acfff8ac Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockGraphIterator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockGraphIteratorAndTrapAggregator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockGraphIteratorAndTrapAggregator.class new file mode 100644 index 00000000..5bb44f39 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockGraphIteratorAndTrapAggregator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockStmtGraphIterator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockStmtGraphIterator.class new file mode 100644 index 00000000..132086f5 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraph$BlockStmtGraphIterator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraph.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraph.class new file mode 100644 index 00000000..bb4caa09 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraph.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraphBlockIterator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraphBlockIterator.class new file mode 100644 index 00000000..8e76e8f5 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/graph/StmtGraphBlockIterator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/inputlocation/AnalysisInputLocation.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/inputlocation/AnalysisInputLocation.class new file mode 100644 index 00000000..6cb5f0db Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/inputlocation/AnalysisInputLocation.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/inputlocation/EagerInputLocation.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/inputlocation/EagerInputLocation.class new file mode 100644 index 00000000..821fa775 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/inputlocation/EagerInputLocation.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/inputlocation/FileType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/inputlocation/FileType.class new file mode 100644 index 00000000..4a01ae1a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/inputlocation/FileType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/IgnoreLocalNameComparator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/IgnoreLocalNameComparator.class new file mode 100644 index 00000000..129ef5f8 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/IgnoreLocalNameComparator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/Jimple.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/Jimple.class new file mode 100644 index 00000000..8ea7c2b4 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/Jimple.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/EquivTo.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/EquivTo.class new file mode 100644 index 00000000..1cd5d681 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/EquivTo.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/FullStmtPositionInfo.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/FullStmtPositionInfo.class new file mode 100644 index 00000000..0c1e1989 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/FullStmtPositionInfo.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/Immediate.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/Immediate.class new file mode 100644 index 00000000..d7862933 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/Immediate.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/JimpleComparator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/JimpleComparator.class new file mode 100644 index 00000000..982ae2cf Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/JimpleComparator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/LValue.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/LValue.class new file mode 100644 index 00000000..6bac4d4f Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/LValue.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/Local.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/Local.class new file mode 100644 index 00000000..5e631c8a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/Local.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator$1.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator$1.class new file mode 100644 index 00000000..374b9f20 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator$1.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator$NamingSwitch.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator$NamingSwitch.class new file mode 100644 index 00000000..d977d682 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator$NamingSwitch.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator.class new file mode 100644 index 00000000..dd558083 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/LocalGenerator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/NoPositionInformation.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/NoPositionInformation.class new file mode 100644 index 00000000..13c23390 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/NoPositionInformation.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/SimpleStmtPositionInfo.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/SimpleStmtPositionInfo.class new file mode 100644 index 00000000..35126825 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/SimpleStmtPositionInfo.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/StmtPositionInfo$1.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/StmtPositionInfo$1.class new file mode 100644 index 00000000..ab864f6d Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/StmtPositionInfo$1.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/StmtPositionInfo.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/StmtPositionInfo.class new file mode 100644 index 00000000..446d5ca4 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/StmtPositionInfo.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/Trap.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/Trap.class new file mode 100644 index 00000000..2af7661a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/Trap.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/Value.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/Value.class new file mode 100644 index 00000000..eb221ad0 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/basic/Value.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/BooleanConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/BooleanConstant.class new file mode 100644 index 00000000..2c42965d Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/BooleanConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/ClassConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/ClassConstant.class new file mode 100644 index 00000000..33617767 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/ClassConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/ComparableConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/ComparableConstant.class new file mode 100644 index 00000000..abd62764 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/ComparableConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/Constant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/Constant.class new file mode 100644 index 00000000..4d16737e Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/Constant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/DoubleConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/DoubleConstant.class new file mode 100644 index 00000000..e40ea28a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/DoubleConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/EnumConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/EnumConstant.class new file mode 100644 index 00000000..68875c17 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/EnumConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/FloatConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/FloatConstant.class new file mode 100644 index 00000000..0463dbb4 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/FloatConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/IntConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/IntConstant.class new file mode 100644 index 00000000..19b94bef Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/IntConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/LogicalConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/LogicalConstant.class new file mode 100644 index 00000000..c4c8ea5a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/LogicalConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/LongConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/LongConstant.class new file mode 100644 index 00000000..ee4bacb3 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/LongConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodHandle$Kind.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodHandle$Kind.class new file mode 100644 index 00000000..ab8faf45 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodHandle$Kind.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodHandle.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodHandle.class new file mode 100644 index 00000000..d80b5555 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodHandle.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodType.class new file mode 100644 index 00000000..31e61a66 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/MethodType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/NullConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/NullConstant.class new file mode 100644 index 00000000..2270fd99 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/NullConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/NumericConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/NumericConstant.class new file mode 100644 index 00000000..5efc4822 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/NumericConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/RealConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/RealConstant.class new file mode 100644 index 00000000..29d7c81e Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/RealConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/ShiftableConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/ShiftableConstant.class new file mode 100644 index 00000000..402ba8f0 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/ShiftableConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/StringConstant.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/StringConstant.class new file mode 100644 index 00000000..921d6f06 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/constant/StringConstant.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractBinopExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractBinopExpr.class new file mode 100644 index 00000000..a6bfcae1 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractBinopExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractConditionExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractConditionExpr.class new file mode 100644 index 00000000..21030fa3 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractConditionExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractFloatBinopExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractFloatBinopExpr.class new file mode 100644 index 00000000..a635a309 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractFloatBinopExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractInstanceInvokeExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractInstanceInvokeExpr.class new file mode 100644 index 00000000..5644a7d1 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractInstanceInvokeExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractIntBinopExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractIntBinopExpr.class new file mode 100644 index 00000000..ed3f7d26 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractIntBinopExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractIntLongBinopExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractIntLongBinopExpr.class new file mode 100644 index 00000000..478785cd Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractIntLongBinopExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractInvokeExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractInvokeExpr.class new file mode 100644 index 00000000..279a633b Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractInvokeExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractUnopExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractUnopExpr.class new file mode 100644 index 00000000..d41fb3f4 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/AbstractUnopExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/Expr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/Expr.class new file mode 100644 index 00000000..b63a0312 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/Expr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JAddExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JAddExpr.class new file mode 100644 index 00000000..7cccae24 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JAddExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JAndExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JAndExpr.class new file mode 100644 index 00000000..a4bebd80 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JAndExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCastExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCastExpr.class new file mode 100644 index 00000000..427ed3a2 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCastExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmpExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmpExpr.class new file mode 100644 index 00000000..6467c8ef Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmpExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmpgExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmpgExpr.class new file mode 100644 index 00000000..5a60fbf5 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmpgExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmplExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmplExpr.class new file mode 100644 index 00000000..b5adf1db Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JCmplExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JDivExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JDivExpr.class new file mode 100644 index 00000000..a6115314 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JDivExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JDynamicInvokeExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JDynamicInvokeExpr.class new file mode 100644 index 00000000..c1d573c8 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JDynamicInvokeExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JEqExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JEqExpr.class new file mode 100644 index 00000000..f5545942 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JEqExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JGeExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JGeExpr.class new file mode 100644 index 00000000..310fe93c Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JGeExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JGtExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JGtExpr.class new file mode 100644 index 00000000..69a22e4d Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JGtExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JInstanceOfExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JInstanceOfExpr.class new file mode 100644 index 00000000..dbd01b6c Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JInstanceOfExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JInterfaceInvokeExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JInterfaceInvokeExpr.class new file mode 100644 index 00000000..73145527 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JInterfaceInvokeExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLeExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLeExpr.class new file mode 100644 index 00000000..8a9aa695 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLeExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLengthExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLengthExpr.class new file mode 100644 index 00000000..2e6160f2 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLengthExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLtExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLtExpr.class new file mode 100644 index 00000000..be4226ce Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JLtExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JMulExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JMulExpr.class new file mode 100644 index 00000000..ec83c708 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JMulExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNeExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNeExpr.class new file mode 100644 index 00000000..28557e3d Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNeExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNegExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNegExpr.class new file mode 100644 index 00000000..428565e6 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNegExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewArrayExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewArrayExpr.class new file mode 100644 index 00000000..91850d4f Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewArrayExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewExpr.class new file mode 100644 index 00000000..e28f90ee Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewMultiArrayExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewMultiArrayExpr.class new file mode 100644 index 00000000..dff8597c Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JNewMultiArrayExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JOrExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JOrExpr.class new file mode 100644 index 00000000..4cf97fd0 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JOrExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JPhiExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JPhiExpr.class new file mode 100644 index 00000000..c156ea2f Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JPhiExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JRemExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JRemExpr.class new file mode 100644 index 00000000..d1208b1b Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JRemExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JShlExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JShlExpr.class new file mode 100644 index 00000000..ac06816d Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JShlExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JShrExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JShrExpr.class new file mode 100644 index 00000000..0b82c294 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JShrExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JSpecialInvokeExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JSpecialInvokeExpr.class new file mode 100644 index 00000000..034330aa Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JSpecialInvokeExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JStaticInvokeExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JStaticInvokeExpr.class new file mode 100644 index 00000000..4bb23b5a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JStaticInvokeExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JSubExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JSubExpr.class new file mode 100644 index 00000000..8c3de8fa Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JSubExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JUshrExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JUshrExpr.class new file mode 100644 index 00000000..f97b27e9 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JUshrExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JVirtualInvokeExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JVirtualInvokeExpr.class new file mode 100644 index 00000000..96e42725 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JVirtualInvokeExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JXorExpr.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JXorExpr.class new file mode 100644 index 00000000..b1258007 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/expr/JXorExpr.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/ConcreteRef.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/ConcreteRef.class new file mode 100644 index 00000000..af598797 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/ConcreteRef.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/IdentityRef.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/IdentityRef.class new file mode 100644 index 00000000..519467e5 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/IdentityRef.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JArrayRef.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JArrayRef.class new file mode 100644 index 00000000..ef0da0f4 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JArrayRef.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JCaughtExceptionRef.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JCaughtExceptionRef.class new file mode 100644 index 00000000..925fcafa Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JCaughtExceptionRef.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JFieldRef.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JFieldRef.class new file mode 100644 index 00000000..bbe4f6d7 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JFieldRef.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JInstanceFieldRef.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JInstanceFieldRef.class new file mode 100644 index 00000000..e812d7af Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JInstanceFieldRef.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JParameterRef.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JParameterRef.class new file mode 100644 index 00000000..dbd73d48 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JParameterRef.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JStaticFieldRef.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JStaticFieldRef.class new file mode 100644 index 00000000..a50d012f Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JStaticFieldRef.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JThisRef.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JThisRef.class new file mode 100644 index 00000000..d30e35f8 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/JThisRef.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/Ref.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/Ref.class new file mode 100644 index 00000000..ba0e2365 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/ref/Ref.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/AbstractDefinitionStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/AbstractDefinitionStmt.class new file mode 100644 index 00000000..40fbb97e Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/AbstractDefinitionStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/AbstractStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/AbstractStmt.class new file mode 100644 index 00000000..17ba7e61 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/AbstractStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/BranchingStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/BranchingStmt.class new file mode 100644 index 00000000..56afd3c0 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/BranchingStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/FallsThroughStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/FallsThroughStmt.class new file mode 100644 index 00000000..5810a5b1 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/FallsThroughStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JAssignStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JAssignStmt.class new file mode 100644 index 00000000..e0a54d7c Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JAssignStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JGotoStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JGotoStmt.class new file mode 100644 index 00000000..04f4c6f8 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JGotoStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JIdentityStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JIdentityStmt.class new file mode 100644 index 00000000..0d69be96 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JIdentityStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JIfStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JIfStmt.class new file mode 100644 index 00000000..cccc0ded Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JIfStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JInvokeStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JInvokeStmt.class new file mode 100644 index 00000000..f5435adf Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JInvokeStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JNopStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JNopStmt.class new file mode 100644 index 00000000..dd61fd70 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JNopStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JReturnStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JReturnStmt.class new file mode 100644 index 00000000..a4a2993d Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JReturnStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JReturnVoidStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JReturnVoidStmt.class new file mode 100644 index 00000000..7487d5a5 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JReturnVoidStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JThrowStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JThrowStmt.class new file mode 100644 index 00000000..b62ac8ce Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/JThrowStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/Stmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/Stmt.class new file mode 100644 index 00000000..9f7f23c9 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/common/stmt/Stmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JBreakpointStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JBreakpointStmt.class new file mode 100644 index 00000000..1d52eff5 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JBreakpointStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JEnterMonitorStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JEnterMonitorStmt.class new file mode 100644 index 00000000..bc9f1bd9 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JEnterMonitorStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JExitMonitorStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JExitMonitorStmt.class new file mode 100644 index 00000000..ce2aa527 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JExitMonitorStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JRetStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JRetStmt.class new file mode 100644 index 00000000..62b275f9 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JRetStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt$ImmutableAscendingSequenceList$1.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt$ImmutableAscendingSequenceList$1.class new file mode 100644 index 00000000..3413dc5b Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt$ImmutableAscendingSequenceList$1.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt$ImmutableAscendingSequenceList.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt$ImmutableAscendingSequenceList.class new file mode 100644 index 00000000..b66806e4 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt$ImmutableAscendingSequenceList.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt.class new file mode 100644 index 00000000..82986564 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/javabytecode/stmt/JSwitchStmt.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractConstantVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractConstantVisitor.class new file mode 100644 index 00000000..5f964dce Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractConstantVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractExprVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractExprVisitor.class new file mode 100644 index 00000000..e0ba74d6 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractExprVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractImmediateVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractImmediateVisitor.class new file mode 100644 index 00000000..06ac4805 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractImmediateVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractRefVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractRefVisitor.class new file mode 100644 index 00000000..0acd113c Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractRefVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractStmtVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractStmtVisitor.class new file mode 100644 index 00000000..4e930f03 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractStmtVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractTypeVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractTypeVisitor.class new file mode 100644 index 00000000..3ebd6c3f Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractTypeVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractValueVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractValueVisitor.class new file mode 100644 index 00000000..37a1d673 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractValueVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractVisitor.class new file mode 100644 index 00000000..5e6107a1 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/AbstractVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/Acceptor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/Acceptor.class new file mode 100644 index 00000000..87ad3e5a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/Acceptor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ConstantVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ConstantVisitor.class new file mode 100644 index 00000000..60703f79 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ConstantVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ExprVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ExprVisitor.class new file mode 100644 index 00000000..87239b4e Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ExprVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ImmediateVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ImmediateVisitor.class new file mode 100644 index 00000000..c3bac0f3 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ImmediateVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/RefVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/RefVisitor.class new file mode 100644 index 00000000..02d847e0 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/RefVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseExprVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseExprVisitor.class new file mode 100644 index 00000000..49c43f95 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseExprVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseRefVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseRefVisitor.class new file mode 100644 index 00000000..ff90c063 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseRefVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseStmtVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseStmtVisitor.class new file mode 100644 index 00000000..29d27177 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ReplaceUseStmtVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/StmtVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/StmtVisitor.class new file mode 100644 index 00000000..30012af2 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/StmtVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/TypeVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/TypeVisitor.class new file mode 100644 index 00000000..5874c7d4 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/TypeVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ValueVisitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ValueVisitor.class new file mode 100644 index 00000000..61b5b22a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/ValueVisitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/Visitor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/Visitor.class new file mode 100644 index 00000000..953954e1 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/jimple/visitor/Visitor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/AbstractClass.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/AbstractClass.class new file mode 100644 index 00000000..8d6e24b1 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/AbstractClass.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Body$1.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Body$1.class new file mode 100644 index 00000000..fc175b3a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Body$1.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Body$BodyBuilder.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Body$BodyBuilder.class new file mode 100644 index 00000000..17aae9ab Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Body$BodyBuilder.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Body.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Body.class new file mode 100644 index 00000000..72aa6ce0 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Body.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/BuilderException.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/BuilderException.class new file mode 100644 index 00000000..c8206b63 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/BuilderException.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/ClassModifier.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/ClassModifier.class new file mode 100644 index 00000000..a0745543 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/ClassModifier.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Field.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Field.class new file mode 100644 index 00000000..8b5dcc42 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Field.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/FieldModifier.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/FieldModifier.class new file mode 100644 index 00000000..e88b3355 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/FieldModifier.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/FullPosition.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/FullPosition.class new file mode 100644 index 00000000..f16baf65 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/FullPosition.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/HasPosition.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/HasPosition.class new file mode 100644 index 00000000..2ed85cbc Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/HasPosition.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/LinePosition.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/LinePosition.class new file mode 100644 index 00000000..b6bc8226 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/LinePosition.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Method.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Method.class new file mode 100644 index 00000000..134c34a4 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Method.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/MethodModifier.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/MethodModifier.class new file mode 100644 index 00000000..b6f2fb38 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/MethodModifier.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Position.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Position.class new file mode 100644 index 00000000..779688ac Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/Position.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootClass.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootClass.class new file mode 100644 index 00000000..8bf6aded Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootClass.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootClassMember.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootClassMember.class new file mode 100644 index 00000000..c85e2740 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootClassMember.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField$BuildStep.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField$BuildStep.class new file mode 100644 index 00000000..3395c3c4 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField$BuildStep.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField$ModifierStep.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField$ModifierStep.class new file mode 100644 index 00000000..0ded0c60 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField$ModifierStep.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField$SignatureStep.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField$SignatureStep.class new file mode 100644 index 00000000..033aafd9 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField$SignatureStep.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField$SootFieldBuilder.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField$SootFieldBuilder.class new file mode 100644 index 00000000..d2ac7dfa Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField$SootFieldBuilder.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField.class new file mode 100644 index 00000000..98c7dc3c Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootField.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$BuildStep.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$BuildStep.class new file mode 100644 index 00000000..c7877b64 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$BuildStep.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$MethodSourceStep.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$MethodSourceStep.class new file mode 100644 index 00000000..a0cdd0b0 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$MethodSourceStep.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$ModifierStep.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$ModifierStep.class new file mode 100644 index 00000000..c78435d5 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$ModifierStep.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$SignatureStep.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$SignatureStep.class new file mode 100644 index 00000000..59aefeb4 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$SignatureStep.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$SootMethodBuilder.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$SootMethodBuilder.class new file mode 100644 index 00000000..11567a35 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$SootMethodBuilder.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$ThrownExceptionsStep.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$ThrownExceptionsStep.class new file mode 100644 index 00000000..9ff00d41 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod$ThrownExceptionsStep.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod.class new file mode 100644 index 00000000..83c26eab Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SootMethod.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SourceType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SourceType.class new file mode 100644 index 00000000..4fc2f9bb Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/model/SourceType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/FieldSignature.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/FieldSignature.class new file mode 100644 index 00000000..4f7cef50 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/FieldSignature.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/FieldSubSignature.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/FieldSubSignature.class new file mode 100644 index 00000000..83ac3e0b Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/FieldSubSignature.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/MethodSignature.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/MethodSignature.class new file mode 100644 index 00000000..1bcec724 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/MethodSignature.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/MethodSubSignature.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/MethodSubSignature.class new file mode 100644 index 00000000..bf9d76ba Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/MethodSubSignature.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/PackageName.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/PackageName.class new file mode 100644 index 00000000..20080079 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/PackageName.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/Signature.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/Signature.class new file mode 100644 index 00000000..b5c7cbb9 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/Signature.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/SootClassMemberSignature.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/SootClassMemberSignature.class new file mode 100644 index 00000000..9e318322 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/SootClassMemberSignature.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/SootClassMemberSubSignature.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/SootClassMemberSubSignature.class new file mode 100644 index 00000000..695f1158 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/signatures/SootClassMemberSubSignature.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/transform/BodyInterceptor.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/transform/BodyInterceptor.class new file mode 100644 index 00000000..f88d3ac9 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/transform/BodyInterceptor.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/HierarchyComparator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/HierarchyComparator.class new file mode 100644 index 00000000..fc72f83a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/HierarchyComparator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/MutableTypeHierarchy.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/MutableTypeHierarchy.class new file mode 100644 index 00000000..ef11a9b0 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/MutableTypeHierarchy.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/TypeHierarchy$1.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/TypeHierarchy$1.class new file mode 100644 index 00000000..a6d22632 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/TypeHierarchy$1.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/TypeHierarchy.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/TypeHierarchy.class new file mode 100644 index 00000000..9b4273e2 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/TypeHierarchy.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$1.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$1.class new file mode 100644 index 00000000..aa3510a3 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$1.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$Edge.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$Edge.class new file mode 100644 index 00000000..266828ce Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$Edge.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$EdgeType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$EdgeType.class new file mode 100644 index 00000000..17a983c8 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$EdgeType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$Vertex.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$Vertex.class new file mode 100644 index 00000000..78c9e354 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$Vertex.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$VertexType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$VertexType.class new file mode 100644 index 00000000..6ee051c8 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult$VertexType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult.class new file mode 100644 index 00000000..65fe3ee7 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$ScanResult.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$SuperClassVertexIterator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$SuperClassVertexIterator.class new file mode 100644 index 00000000..577ee926 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy$SuperClassVertexIterator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy.class new file mode 100644 index 00000000..44f472d4 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/typehierarchy/ViewTypeHierarchy.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/ArrayType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/ArrayType.class new file mode 100644 index 00000000..5cd2aa4a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/ArrayType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/ClassType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/ClassType.class new file mode 100644 index 00000000..a2dd22e3 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/ClassType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/NullType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/NullType.class new file mode 100644 index 00000000..d02a33fe Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/NullType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$1.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$1.class new file mode 100644 index 00000000..9932b9ae Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$1.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$BooleanType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$BooleanType.class new file mode 100644 index 00000000..e649abfa Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$BooleanType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$ByteType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$ByteType.class new file mode 100644 index 00000000..b940f95c Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$ByteType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$CharType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$CharType.class new file mode 100644 index 00000000..efc7db25 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$CharType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$DoubleType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$DoubleType.class new file mode 100644 index 00000000..00a7682c Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$DoubleType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$FloatType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$FloatType.class new file mode 100644 index 00000000..8e31312b Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$FloatType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$IntType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$IntType.class new file mode 100644 index 00000000..2c263e9e Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$IntType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$LongType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$LongType.class new file mode 100644 index 00000000..51bc648e Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$LongType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$ShortType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$ShortType.class new file mode 100644 index 00000000..1560f36b Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType$ShortType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType.class new file mode 100644 index 00000000..d1beeb27 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/PrimitiveType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/ReferenceType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/ReferenceType.class new file mode 100644 index 00000000..04b2593e Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/ReferenceType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/Type.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/Type.class new file mode 100644 index 00000000..91b8fdc9 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/Type.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/UnknownType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/UnknownType.class new file mode 100644 index 00000000..3a0c6aba Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/UnknownType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/VoidType.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/VoidType.class new file mode 100644 index 00000000..9fe54c94 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/types/VoidType.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/CollectionUtils.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/CollectionUtils.class new file mode 100644 index 00000000..977af5b5 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/CollectionUtils.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/DotExporter.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/DotExporter.class new file mode 100644 index 00000000..3d248241 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/DotExporter.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/EscapedWriter.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/EscapedWriter.class new file mode 100644 index 00000000..b1fe3fc2 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/EscapedWriter.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/ImmutableUtils$ImmutableCollectors.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/ImmutableUtils$ImmutableCollectors.class new file mode 100644 index 00000000..5e49fb4d Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/ImmutableUtils$ImmutableCollectors.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/ImmutableUtils.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/ImmutableUtils.class new file mode 100644 index 00000000..0482bab3 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/ImmutableUtils.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/PathUtils.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/PathUtils.class new file mode 100644 index 00000000..110154b5 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/PathUtils.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/StreamUtils.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/StreamUtils.class new file mode 100644 index 00000000..fe7744ed Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/StreamUtils.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/StringTools.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/StringTools.class new file mode 100644 index 00000000..11e263ce Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/StringTools.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/Utils.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/Utils.class new file mode 100644 index 00000000..8c6dbd58 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/Utils.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/AbstractStmtPrinter.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/AbstractStmtPrinter.class new file mode 100644 index 00000000..3c5076ea Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/AbstractStmtPrinter.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/BriefStmtPrinter.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/BriefStmtPrinter.class new file mode 100644 index 00000000..2d37f29d Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/BriefStmtPrinter.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/JimplePrinter$Option.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/JimplePrinter$Option.class new file mode 100644 index 00000000..440630b3 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/JimplePrinter$Option.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/JimplePrinter.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/JimplePrinter.class new file mode 100644 index 00000000..401f9cda Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/JimplePrinter.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/LabeledStmtPrinter.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/LabeledStmtPrinter.class new file mode 100644 index 00000000..088785bd Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/LabeledStmtPrinter.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/LegacyJimplePrinter.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/LegacyJimplePrinter.class new file mode 100644 index 00000000..ec78ca8d Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/LegacyJimplePrinter.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/NormalStmtPrinter.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/NormalStmtPrinter.class new file mode 100644 index 00000000..1d1666c9 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/NormalStmtPrinter.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/StmtPrinter.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/StmtPrinter.class new file mode 100644 index 00000000..5e36a7af Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/util/printer/StmtPrinter.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/BodyValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/BodyValidator.class new file mode 100644 index 00000000..826b69a2 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/BodyValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/CheckInitValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/CheckInitValidator.class new file mode 100644 index 00000000..ccf3e32d Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/CheckInitValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/CheckTypesValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/CheckTypesValidator.class new file mode 100644 index 00000000..645035e2 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/CheckTypesValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/ClassModifiersValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/ClassModifiersValidator.class new file mode 100644 index 00000000..c5f296a2 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/ClassModifiersValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/ClassValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/ClassValidator.class new file mode 100644 index 00000000..5d2cc621 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/ClassValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/FieldModifiersValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/FieldModifiersValidator.class new file mode 100644 index 00000000..861df454 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/FieldModifiersValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/FieldRefValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/FieldRefValidator.class new file mode 100644 index 00000000..ddc83e4b Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/FieldRefValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/IdentityStmtsValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/IdentityStmtsValidator.class new file mode 100644 index 00000000..aa46be0c Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/IdentityStmtsValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/InvokeArgumentValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/InvokeArgumentValidator.class new file mode 100644 index 00000000..de9b1354 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/InvokeArgumentValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/JimpleTrapValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/JimpleTrapValidator.class new file mode 100644 index 00000000..f19cebf5 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/JimpleTrapValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/LocalsValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/LocalsValidator.class new file mode 100644 index 00000000..4f9377ab Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/LocalsValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/MethodDeclarationValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/MethodDeclarationValidator.class new file mode 100644 index 00000000..2850f451 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/MethodDeclarationValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/MethodValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/MethodValidator.class new file mode 100644 index 00000000..6c5d4c31 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/MethodValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/NewValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/NewValidator.class new file mode 100644 index 00000000..4fc2d9ea Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/NewValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/OuterClassValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/OuterClassValidator.class new file mode 100644 index 00000000..7b639c43 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/OuterClassValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/StmtsValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/StmtsValidator.class new file mode 100644 index 00000000..43aea446 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/StmtsValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/TrapsValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/TrapsValidator.class new file mode 100644 index 00000000..e4dda216 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/TrapsValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/TypesValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/TypesValidator.class new file mode 100644 index 00000000..c613636a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/TypesValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/UsesValidator.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/UsesValidator.class new file mode 100644 index 00000000..1f083a18 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/UsesValidator.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/ValidationException.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/ValidationException.class new file mode 100644 index 00000000..c0a0cc0a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/validation/ValidationException.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/views/AbstractView.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/views/AbstractView.class new file mode 100644 index 00000000..27f72dce Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/views/AbstractView.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/views/MutableView.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/views/MutableView.class new file mode 100644 index 00000000..2cdbdb2a Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/views/MutableView.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/views/View.class b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/views/View.class new file mode 100644 index 00000000..2a7622cc Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/sootup/core/views/View.class differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/target/maven-archiver/pom.properties b/examples/callgraph/java-maven-sootup/SootUpWrapper/target/maven-archiver/pom.properties new file mode 100644 index 00000000..d037a3d5 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/SootUpWrapper/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Thu May 14 05:01:01 UTC 2026 +groupId=com.debricked.sootup +artifactId=sootup-wrapper +version=1.0.0 diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/examples/callgraph/java-maven-sootup/SootUpWrapper/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 00000000..0d352c87 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/SootUpWrapper/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,3 @@ +com/debricked/sootup/SootUpWrapper$Args.class +com/debricked/sootup/SootUpWrapper$CallerEntry.class +com/debricked/sootup/SootUpWrapper.class diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/examples/callgraph/java-maven-sootup/SootUpWrapper/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 00000000..d22a5d70 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/SootUpWrapper/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1 @@ +/home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-sootup/SootUpWrapper/src/main/java/com/debricked/sootup/SootUpWrapper.java diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/target/original-sootup-wrapper-1.0.0.jar b/examples/callgraph/java-maven-sootup/SootUpWrapper/target/original-sootup-wrapper-1.0.0.jar new file mode 100644 index 00000000..42f9dc09 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/target/original-sootup-wrapper-1.0.0.jar differ diff --git a/examples/callgraph/java-maven-sootup/SootUpWrapper/target/sootup-wrapper-1.0.0.jar b/examples/callgraph/java-maven-sootup/SootUpWrapper/target/sootup-wrapper-1.0.0.jar new file mode 100644 index 00000000..4aeb8dee Binary files /dev/null and b/examples/callgraph/java-maven-sootup/SootUpWrapper/target/sootup-wrapper-1.0.0.jar differ diff --git a/examples/callgraph/java-maven-sootup/compare-callgraphs.sh b/examples/callgraph/java-maven-sootup/compare-callgraphs.sh new file mode 100755 index 00000000..ea974ef5 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/compare-callgraphs.sh @@ -0,0 +1,189 @@ +#!/bin/bash +# ============================================================ +# compare-callgraphs.sh +# +# Compares the Soot v1 (classic) and SootUp v2 callgraph outputs. +# Handles v1 output in either plain JSON or Debricked's +# base64+zip post-processed format. +# +# Usage: +# bash compare-callgraphs.sh [--run-both] +# ============================================================ +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +V1_DIR="$SCRIPT_DIR/../java-maven-minimal" +V2_DIR="$SCRIPT_DIR" + +V1_OUTPUT="$V1_DIR/debricked-call-graph.java" +V2_OUTPUT="$V2_DIR/debricked-call-graph-sootup.java" + +if [ "${1:-}" = "--run-both" ]; then + echo "Running Soot v1..." + (cd "$V1_DIR" && bash run-callgraph.sh) + echo "" + echo "Running SootUp v2..." + (cd "$V2_DIR" && bash run-callgraph-sootup.sh) + echo "" +fi + +if [ ! -f "$V1_OUTPUT" ]; then + echo "ERROR: Soot v1 output not found: $V1_OUTPUT" + echo " Run: cd $V1_DIR && bash run-callgraph.sh" + exit 1 +fi +if [ ! -f "$V2_OUTPUT" ]; then + echo "ERROR: SootUp v2 output not found: $V2_OUTPUT" + echo " Run: cd $V2_DIR && bash run-callgraph-sootup.sh" + exit 1 +fi + +python3 - "$V1_OUTPUT" "$V2_OUTPUT" <<'PY' +import base64, io, json, sys, zipfile + +v1_path, v2_path = sys.argv[1], sys.argv[2] + + +def load_callgraph(path): + raw = open(path, "rb").read() + try: + data = json.loads(raw.decode("utf-8", errors="strict")) + return data, "json" + except Exception: + pass + text = raw.decode("utf-8", errors="ignore").strip() + decoded = base64.b64decode(text) + with zipfile.ZipFile(io.BytesIO(decoded), "r") as zf: + payload = zf.read(zf.namelist()[0]).decode("utf-8") + return json.loads(payload), "base64+zip" + + +def short_sig(sig): + """ + Normalize to a short, package-free signature for cross-format comparison. + 'com.example.callgraph.App.main(String[])' -> 'App.main(String[])' + 'App.main(String[])' -> 'App.main(String[])' + """ + paren = sig.index("(") + before_paren = sig[:paren] + parts = before_paren.split(".") + # last two parts are ClassName.methodName (drop all package segments) + short_method = ".".join(parts[-2:]) if len(parts) >= 2 else before_paren + return short_method + sig[paren:] + + +def get_methods(data): + return {e[0] for e in data.get("data", []) if isinstance(e, list) and e} + + +def get_user_methods(data): + return { + e[0] for e in data.get("data", []) + if isinstance(e, list) and len(e) > 1 and e[1] is True + } + + +def has_edge(data, caller_substr, callee_substr): + """Return (found, line_number) searching by substring in both FQN and short form.""" + for entry in data.get("data", []): + if not (isinstance(entry, list) and len(entry) >= 8): + continue + sig = entry[0] + callers_list = entry[7] + if callee_substr in sig or callee_substr in short_sig(sig): + for c in callers_list: + if isinstance(c, list) and len(c) >= 2: + caller_sig = c[0] + if caller_substr in caller_sig or caller_substr in short_sig(caller_sig): + return True, c[1] + return False, -1 + + +v1, v1_fmt = load_callgraph(v1_path) +v2, v2_fmt = load_callgraph(v2_path) + +v1_all = get_methods(v1) +v2_all = get_methods(v2) +v1_user = get_user_methods(v1) +v2_user = get_user_methods(v2) + +# Normalize to short sigs for cross-format intersection +v1_user_short = {short_sig(m) for m in v1_user} +v2_user_short = {short_sig(m) for m in v2_user} + +common = sorted(v1_user_short & v2_user_short) +only_v1 = sorted(v1_user_short - v2_user_short) +only_v2 = sorted(v2_user_short - v1_user_short) + +print("=" * 64) +print(" Callgraph Comparison: Soot v1 vs SootUp v2") +print("=" * 64) +print() +print(f" v1 output format : {v1_fmt}") +print(f" v2 output format : {v2_fmt}") +print() +print(f" {'Metric':<35} {'Soot v1':>10} {'SootUp v2':>10}") +print(f" {'-'*35} {'-'*10} {'-'*10}") +print(f" {'Total methods':<35} {len(v1_all):>10} {len(v2_all):>10}") +print(f" {'User code methods':<35} {len(v1_user):>10} {len(v2_user):>10}") +print(f" {'Library/JDK methods':<35} {len(v1_all)-len(v1_user):>10} {len(v2_all)-len(v2_user):>10}") +print() + +print("-" * 64) +print(f" User methods in BOTH ({len(common)})") +print("-" * 64) +for m in common: + print(f" ✓ {m}") +print() + +if only_v1: + print("-" * 64) + print(f" In Soot v1 ONLY ({len(only_v1)}) — missing from SootUp") + print("-" * 64) + for m in only_v1: + print(f" ✗ {m}") + print() + +if only_v2: + print("-" * 64) + print(f" In SootUp v2 ONLY ({len(only_v2)}) — extra vs Soot") + print("-" * 64) + for m in only_v2: + print(f" ★ {m}") + print() + +checks = [ + ("App.main → OrderService.placeOrder", "App.main", "OrderService.placeOrder"), + ("App.main → LoggerUtil.log", "App.main", "LoggerUtil.log"), + ("OrderService.placeOrder → calculateTotal", "OrderService.placeOrder", "PricingService.calculateTotal"), + ("PricingService.calculateTotal → applyDiscount","calculateTotal", "applyDiscount"), + ("LoggerUtil.log → StringUtils.upperCase", "LoggerUtil.log", "StringUtils.upperCase"), +] + +print("-" * 64) +print(" Key call edges") +print("-" * 64) +all_ok = True +for label, caller, callee in checks: + ok1, ln1 = has_edge(v1, caller, callee) + ok2, ln2 = has_edge(v2, caller, callee) + s1 = f"✓ line {ln1}" if ok1 else "✗ MISSING" + s2 = f"✓ line {ln2}" if ok2 else "✗ MISSING" + match = "=" if ok1 == ok2 else "≠" + if not ok1 or not ok2: + all_ok = False + print(f" {match} {label}") + print(f" v1: {s1} v2: {s2}") +print() + +if all_ok: + print(" ✓ All expected edges present in both outputs") +else: + print(" ⚠ Some expected edges differ between outputs") +print() +print(f" v1 output : {v1_path}") +print(f" v2 output : {v2_path}") +print() +print(" To inspect manually:") +print(f" python3 -m json.tool {v2_path} | less") +PY diff --git a/examples/callgraph/java-maven-sootup/debricked-call-graph-sootup.java b/examples/callgraph/java-maven-sootup/debricked-call-graph-sootup.java new file mode 100644 index 00000000..7862c7d1 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/debricked-call-graph-sootup.java @@ -0,0 +1,13 @@ +{"version":"5","data":[["java.lang.Object.()",false,false,"java.lang.Object","java/lang/Object.java",-1,-1,[["com.example.callgraph.OrderService.(PricingService)",6,"-"],["com.example.callgraph.PricingService.()",3,"-"]]], +["org.apache.commons.lang3.StringUtils.()",false,false,"org.apache.commons.lang3.StringUtils","org/apache/commons/lang3/StringUtils.java",188,-1,[]], +["com.example.callgraph.LoggerUtil.log(String)",true,false,"com.example.callgraph.LoggerUtil","com/example/callgraph/LoggerUtil.java",10,-1,[["com.example.callgraph.App.main(String[])",9,"-"]]], +["com.example.callgraph.OrderService.(PricingService)",true,false,"com.example.callgraph.OrderService","com/example/callgraph/OrderService.java",6,-1,[["com.example.callgraph.App.main(String[])",6,"-"]]], +["com.example.callgraph.App.main(String[])",true,false,"com.example.callgraph.App","com/example/callgraph/App.java",5,-1,[]], +["com.example.callgraph.PricingService.calculateTotal(int, double)",true,false,"com.example.callgraph.PricingService","com/example/callgraph/PricingService.java",5,-1,[["com.example.callgraph.OrderService.placeOrder(String, int, double)",11,"-"]]], +["com.example.callgraph.PricingService.()",true,false,"com.example.callgraph.PricingService","com/example/callgraph/PricingService.java",3,-1,[["com.example.callgraph.App.main(String[])",5,"-"]]], +["sootup.dummy.InvokeDynamic.makeConcatWithConstants(String, int, double)",false,false,"sootup.dummy.InvokeDynamic","sootup/dummy/InvokeDynamic.java",-1,-1,[["com.example.callgraph.OrderService.placeOrder(String, int, double)",12,"-"]]], +["com.example.callgraph.PricingService.applyDiscount(double)",true,false,"com.example.callgraph.PricingService","com/example/callgraph/PricingService.java",10,-1,[["com.example.callgraph.PricingService.calculateTotal(int, double)",6,"-"]]], +["sootup.dummy.InvokeDynamic.makeConcatWithConstants(String)",false,false,"sootup.dummy.InvokeDynamic","sootup/dummy/InvokeDynamic.java",-1,-1,[["com.example.callgraph.LoggerUtil.log(String)",11,"-"]]], +["org.apache.commons.lang3.StringUtils.upperCase(String)",false,false,"org.apache.commons.lang3.StringUtils","org/apache/commons/lang3/StringUtils.java",9345,-1,[["com.example.callgraph.LoggerUtil.log(String)",10,"-"]]], +["com.example.callgraph.OrderService.placeOrder(String, int, double)",true,false,"com.example.callgraph.OrderService","com/example/callgraph/OrderService.java",11,-1,[["com.example.callgraph.App.main(String[])",8,"-"]]], +["java.io.PrintStream.println(String)",false,false,"java.io.PrintStream","java/io/PrintStream.java",-1,-1,[["com.example.callgraph.LoggerUtil.log(String)",11,"-"]]]]} \ No newline at end of file diff --git a/examples/callgraph/java-maven-sootup/pom.xml b/examples/callgraph/java-maven-sootup/pom.xml new file mode 100644 index 00000000..b9feaab7 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/pom.xml @@ -0,0 +1,32 @@ + + + 4.0.0 + com.example.callgraph + java-maven-sootup + 1.0.0 + java-maven-sootup + Sample app for SootUp callgraph POC (same as v1, analysed by SootUp instead of Soot) + + 11 + 11 + UTF-8 + + + + org.apache.commons + commons-lang3 + 3.14.0 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + + + diff --git a/examples/callgraph/java-maven-sootup/run-callgraph-sootup.sh b/examples/callgraph/java-maven-sootup/run-callgraph-sootup.sh new file mode 100755 index 00000000..9d4fb439 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/run-callgraph-sootup.sh @@ -0,0 +1,95 @@ +#!/bin/bash +# ============================================================ +# SootUp Callgraph POC — build & run script +# v2: Uses SootUp instead of classic Soot (SootWrapper.jar) +# +# Steps: +# 1. Check prerequisites (Java, Maven) +# 2. Build the sample app (mvn package) +# 3. Copy dependencies (mvn dependency:copy-dependencies) +# 4. Build SootUpWrapper (mvn package in SootUpWrapper/) +# 5. Run SootUpWrapper.jar directly via java -jar +# 6. Verify output +# ============================================================ +set -e +SAMPLE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$SAMPLE_DIR" +ALGORITHM="${1:-rta}" # Pass "cha" as first arg to use CHA instead of RTA +echo "============================================================" +echo " SootUp Callgraph POC (v2)" +echo " Algorithm: ${ALGORITHM^^}" +echo "============================================================" +echo "" +# ── Step 1: Prerequisites ────────────────────────────────────── +echo "[1/5] Checking prerequisites..." +if ! command -v java &>/dev/null; then + echo "ERROR: Java not found. Install Java 11+." + exit 1 +fi +JAVA_VER=$(java -version 2>&1 | head -1) +echo " Java : $JAVA_VER" +if ! command -v mvn &>/dev/null; then + echo "ERROR: Maven not found." + exit 1 +fi +MVN_VER=$(mvn --version 2>&1 | head -1) +echo " Maven: $MVN_VER" +echo "" +# ── Step 2: Build the sample app ────────────────────────────── +echo "[2/5] Building sample app (mvn package)..." +mvn package -q -DskipTests +echo " ✓ Compiled → target/classes/" +echo "" +# ── Step 3: Copy runtime dependencies ───────────────────────── +echo "[3/5] Copying runtime dependencies..." +if [ ! -d ".debrickedTmpFolder" ]; then + mvn -q -B dependency:copy-dependencies \ + -DoutputDirectory=./.debrickedTmpFolder \ + -DskipTests + echo " ✓ Dependencies → .debrickedTmpFolder/" +else + echo " ✓ .debrickedTmpFolder/ already present (skipping)" +fi +echo "" +# ── Step 4: Build SootUpWrapper fat JAR ─────────────────────── +echo "[4/5] Building SootUpWrapper.jar..." +WRAPPER_DIR="$SAMPLE_DIR/SootUpWrapper" +WRAPPER_JAR="$WRAPPER_DIR/target/sootup-wrapper-1.0.0.jar" +if [ ! -f "$WRAPPER_JAR" ] || [ "$FORCE_REBUILD" = "1" ]; then + (cd "$WRAPPER_DIR" && mvn package -q -DskipTests) + echo " ✓ Built → SootUpWrapper/target/sootup-wrapper-1.0.0.jar" +else + echo " ✓ SootUpWrapper.jar already built (set FORCE_REBUILD=1 to rebuild)" +fi +echo "" +# ── Step 5: Run SootUpWrapper ────────────────────────────────── +echo "[5/5] Running callgraph generation with SootUp ($ALGORITHM)..." +OUTPUT_FILE="debricked-call-graph-sootup.java" +java -jar "$WRAPPER_JAR" \ + -u "$SAMPLE_DIR/target/classes" \ + -l "$SAMPLE_DIR/.debrickedTmpFolder" \ + -f "$SAMPLE_DIR/$OUTPUT_FILE" \ + -a "$ALGORITHM" +echo "" +# ── Verify output ────────────────────────────────────────────── +echo "============================================================" +echo " Results" +echo "============================================================" +if [ -f "$OUTPUT_FILE" ]; then + SIZE=$(wc -c < "$OUTPUT_FILE") + METHODS=$(grep -o '\[' "$OUTPUT_FILE" | wc -l) + echo " ✓ Output: $OUTPUT_FILE" + echo " Size : ${SIZE} bytes" + echo "" + echo " First 300 chars:" + head -c 300 "$OUTPUT_FILE" | sed 's/^/ /' + echo "" +else + echo " ✗ Output file not found: $OUTPUT_FILE" + exit 1 +fi +echo "" +echo " ✓ SootUp callgraph generation complete!" +echo "" +echo " Compare with Soot v1 output:" +echo " bash compare-callgraphs.sh" diff --git a/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/App.java b/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/App.java new file mode 100644 index 00000000..a9804566 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/App.java @@ -0,0 +1,12 @@ +package com.example.callgraph; + +public class App { + public static void main(String[] args) { + PricingService pricingService = new PricingService(); + OrderService orderService = new OrderService(pricingService); + + String confirmation = orderService.placeOrder("book", 2, 24.99); + LoggerUtil.log(confirmation); + } +} + diff --git a/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/LoggerUtil.java b/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/LoggerUtil.java new file mode 100644 index 00000000..8c525e64 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/LoggerUtil.java @@ -0,0 +1,14 @@ +package com.example.callgraph; + +import org.apache.commons.lang3.StringUtils; + +public final class LoggerUtil { + private LoggerUtil() { + } + + public static void log(String message) { + String normalized = StringUtils.upperCase(message); + System.out.println("[APP] " + normalized); + } +} + diff --git a/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/OrderService.java b/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/OrderService.java new file mode 100644 index 00000000..80786c81 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/OrderService.java @@ -0,0 +1,15 @@ +package com.example.callgraph; + +public class OrderService { + private final PricingService pricingService; + + public OrderService(PricingService pricingService) { + this.pricingService = pricingService; + } + + public String placeOrder(String item, int quantity, double unitPrice) { + double total = pricingService.calculateTotal(quantity, unitPrice); + return "Order placed: " + item + " x" + quantity + " total=" + total; + } +} + diff --git a/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/PricingService.java b/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/PricingService.java new file mode 100644 index 00000000..12c5e5d0 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/PricingService.java @@ -0,0 +1,16 @@ +package com.example.callgraph; + +public class PricingService { + public double calculateTotal(int quantity, double unitPrice) { + double subtotal = quantity * unitPrice; + return applyDiscount(subtotal); + } + + private double applyDiscount(double subtotal) { + if (subtotal >= 50.0) { + return subtotal * 0.9; + } + return subtotal; + } +} + diff --git a/examples/callgraph/java-maven-sootup/target/classes/com/example/callgraph/App.class b/examples/callgraph/java-maven-sootup/target/classes/com/example/callgraph/App.class new file mode 100644 index 00000000..1633e626 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/target/classes/com/example/callgraph/App.class differ diff --git a/examples/callgraph/java-maven-sootup/target/classes/com/example/callgraph/LoggerUtil.class b/examples/callgraph/java-maven-sootup/target/classes/com/example/callgraph/LoggerUtil.class new file mode 100644 index 00000000..2d5cb8f1 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/target/classes/com/example/callgraph/LoggerUtil.class differ diff --git a/examples/callgraph/java-maven-sootup/target/classes/com/example/callgraph/OrderService.class b/examples/callgraph/java-maven-sootup/target/classes/com/example/callgraph/OrderService.class new file mode 100644 index 00000000..3adc5865 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/target/classes/com/example/callgraph/OrderService.class differ diff --git a/examples/callgraph/java-maven-sootup/target/classes/com/example/callgraph/PricingService.class b/examples/callgraph/java-maven-sootup/target/classes/com/example/callgraph/PricingService.class new file mode 100644 index 00000000..b973bc2f Binary files /dev/null and b/examples/callgraph/java-maven-sootup/target/classes/com/example/callgraph/PricingService.class differ diff --git a/examples/callgraph/java-maven-sootup/target/java-maven-sootup-1.0.0.jar b/examples/callgraph/java-maven-sootup/target/java-maven-sootup-1.0.0.jar new file mode 100644 index 00000000..b17e4a40 Binary files /dev/null and b/examples/callgraph/java-maven-sootup/target/java-maven-sootup-1.0.0.jar differ diff --git a/examples/callgraph/java-maven-sootup/target/maven-archiver/pom.properties b/examples/callgraph/java-maven-sootup/target/maven-archiver/pom.properties new file mode 100644 index 00000000..79e11bda --- /dev/null +++ b/examples/callgraph/java-maven-sootup/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Thu May 14 05:01:50 UTC 2026 +groupId=com.example.callgraph +artifactId=java-maven-sootup +version=1.0.0 diff --git a/examples/callgraph/java-maven-sootup/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/examples/callgraph/java-maven-sootup/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 00000000..a2915011 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,4 @@ +com/example/callgraph/LoggerUtil.class +com/example/callgraph/PricingService.class +com/example/callgraph/App.class +com/example/callgraph/OrderService.class diff --git a/examples/callgraph/java-maven-sootup/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/examples/callgraph/java-maven-sootup/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 00000000..c7a0de07 --- /dev/null +++ b/examples/callgraph/java-maven-sootup/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,4 @@ +/home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/PricingService.java +/home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/OrderService.java +/home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/LoggerUtil.java +/home/dritthi/projects/debricked-projects/cli/examples/callgraph/java-maven-sootup/src/main/java/com/example/callgraph/App.java diff --git a/internal/callgraph/language/java/soot_handler_component_test.go b/internal/callgraph/language/java/soot_handler_component_test.go new file mode 100644 index 00000000..48cf7a3b --- /dev/null +++ b/internal/callgraph/language/java/soot_handler_component_test.go @@ -0,0 +1,58 @@ +package java + +import ( + "fmt" + "path/filepath" + "strings" + "testing" + + ioTestData "github.com/debricked/cli/internal/io/testdata" + "github.com/stretchr/testify/assert" +) + +func TestSootHandlerComponent_GetSootWrapperInvalidVersionString(t *testing.T) { + h := SootHandler{} + _, err := h.GetSootWrapper("not-a-number", ioTestData.FileSystemMock{}, ioTestData.ArchiveMock{}) + assert.EqualError(t, err, "could not convert version to int") +} + +func TestSootHandlerComponent_GetSootWrapperUnsupportedJavaVersion(t *testing.T) { + h := SootHandler{} + _, err := h.GetSootWrapper("8", ioTestData.FileSystemMock{}, ioTestData.ArchiveMock{}) + assert.EqualError(t, err, "lowest supported version for running callgraph generation is 11") +} + +func TestSootHandlerComponent_GetSootWrapperMkdirError(t *testing.T) { + h := SootHandler{} + fsMock := ioTestData.FileSystemMock{ + StatError: fmt.Errorf("missing"), + IsNotExistBool: true, + MkdirError: fmt.Errorf("mkdir failed"), + } + + _, err := h.GetSootWrapper("11", fsMock, ioTestData.ArchiveMock{}) + assert.EqualError(t, err, "mkdir failed") +} + +func TestSootHandlerComponent_GetSootWrapperVersion21UsesEmbeddedJar(t *testing.T) { + h := SootHandler{} + fsMock := ioTestData.FileSystemMock{ + StatError: fmt.Errorf("missing"), + IsNotExistBool: true, + } + + p, err := h.GetSootWrapper("21", fsMock, ioTestData.ArchiveMock{}) + assert.NoError(t, err) + assert.NotEmpty(t, p) + assert.True(t, strings.HasSuffix(filepath.ToSlash(p), "/.debricked/SootWrapper.jar")) +} + +func TestSootHandlerComponent_GetSootWrapperReturnsExistingPath(t *testing.T) { + h := SootHandler{} + fsMock := ioTestData.FileSystemMock{} + + p, err := h.GetSootWrapper("17", fsMock, ioTestData.ArchiveMock{}) + assert.NoError(t, err) + assert.True(t, strings.HasSuffix(filepath.ToSlash(p), "/.debricked/soot-wrapper.jar")) +} +