package org.robolectric.internal.bytecode; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodType; import java.lang.invoke.MutableCallSite; import static org.robolectric.internal.bytecode.MethodCallSite.Kind.STATIC; public class MethodCallSite extends RoboCallSite { private final String name; private final MethodHandle original; private final Kind kind; public MethodCallSite(MethodType type, Class<?> caller, String name, MethodHandle original, Kind kind) { super(type, caller); this.name = name; this.original = original; this.kind = kind; } public String getName() { return name; } public MethodHandle getOriginal() { return original; } public Class<?> thisType() { return isStatic() ? null : type().parameterType(0); } public boolean isStatic() { return kind == STATIC; } @Override public String toString() { return "RoboCallSite{" + "caller=" + getCaller() + ", original=" + original + ", kind=" + kind + '}'; } public enum Kind { REGULAR, STATIC } }